# coding=utf-8 setThrowException(True) class Nautilus: REMOTE = 0 LOCAL = 1 _tab = None _dirs = {} def __init__(self): self._dirs = {self.LOCAL: [], self.REMOTE: []} self._startNautilus() self._initWebdav() sleep(1) self._initLocal() def _startNautilus(self): openApp("/usr/bin/nautilus") wait(Pattern().similar(0.70).firstN(1)) def _initWebdav(self): click() wait() click() click() click() type(, "webdav") click() self._tab = self.REMOTE self._dirs[self.REMOTE].append("/") def _initLocal(self): type("t", KEY_CTRL) sleep(1) self._tab = self.LOCAL click() self._dirs[self.LOCAL].append("/") self.openLocal(, "down") def switchRemote(self): if (self._tab == self.LOCAL): type(Key.PAGE_UP, KEY_CTRL) self._tab = self.REMOTE sleep(0.4) def switchLocal(self): if (self._tab == self.REMOTE): type(Key.PAGE_DOWN, KEY_CTRL) self._tab = self.LOCAL sleep(0.4) def openLocal(self, dirImg, dirName): self.switchLocal() self._open(dirImg, dirName) def _open(self, dirImg, dirName): doubleClick(dirImg) self._dirs[self._tab].append(dirName) def openRemote(self, dirImg, dirName): self.switchRemote() self._open(dirImg, dirName) def upRemote(self, dirName=None): self.switchRemote() sleep(1) self.goUp(dirName) def upLocal(self, dirName=None): self.switchLocal() sleep(1) self.goUp(dirName) def goUp(self, dirName): if dirName == None: click(Pattern().similar(0.90).firstN(1)) self._dirs[self._tab].pop() return while self._dirs[self._tab][-1] != dirName: click(Pattern().similar(0.90).firstN(1)) self._dirs[self._tab].pop() def copy(self): type("c", KEY_CTRL) def paste(self): type("v", KEY_CTRL) def rename(self, fileImg, newName, newFileImg): click(fileImg) sleep(0.2) type(Key.F2) sleep(0.5) type("a", KEY_CTRL) sleep(0.2) paste(newName) sleep(0.1) type(Key.ENTER) wait(newFileImg) class NautilusWebdavTest: _nautilus = None def __init__(self, nautilus): self._nautilus = nautilus def run(self): self.testInitial() self.testListCollection() self.testDownloadSingle() self.testListSubdir() self.testDownloadMultiple() self.testCreateNewdir() self.testListNewdir() self.testUploadSingle() self.testCreateNewsubdir() self.testListNewsubdir() self.testUploadSingleOverwrite() self.testDeleteNewdir() self.testUploadNew() self.testDownloadUploaded() self.testRenameFiles() self.testCopyFilesRemote() self.testRenameCollection() def testInitial(self): self._nautilus.switchRemote() find(Pattern().similar(0.70).firstN(1)) def testListCollection(self): self._nautilus.openRemote(, "collection") find(Pattern().similar(0.70).firstN(1)) def testDownloadSingle(self): self._nautilus.switchRemote() click(Pattern().similar(0.95).firstN(1)) self._nautilus.copy() self._nautilus.switchLocal() sleep(1) self._nautilus.paste() sleep(1) find(Pattern().similar(0.68).firstN(1)) def testListSubdir(self): self._nautilus.openRemote(, "subdir") find() def testDownloadMultiple(self): self._nautilus.switchRemote() click(Pattern().similar(0.70).firstN(1)) type(Key.DOWN, KEY_SHIFT) self._nautilus.copy() sleep(1) self._nautilus.switchLocal() sleep(1) self._nautilus.paste() sleep(1) find(Pattern().similar(0.90).firstN(1)) def testCreateNewdir(self): self._nautilus.switchRemote() type("n", KEY_CTRL | KEY_SHIFT) sleep(1) type("newdir") type("\n") find(Pattern().similar(0.90).firstN(1)) def testListNewdir(self): self._nautilus.openRemote(, "newdir") find(Pattern().similar(0.90).firstN(1)) def testUploadSingle(self): self._nautilus.switchLocal() click(Pattern().similar(0.90).firstN(1)) self._nautilus.copy() self._nautilus.switchRemote() self._nautilus.paste() find(Pattern().similar(0.90).firstN(1)) def testCreateNewsubdir(self): self._nautilus.switchRemote() type("n", KEY_CTRL | KEY_SHIFT) sleep(1) type("newsubdir") type("\n") find(Pattern().similar(0.90).firstN(1)) def testListNewsubdir(self): self._nautilus.openRemote(, "newdir") find(Pattern().similar(0.90).firstN(1)) def testUploadSingleOverwrite(self): self._nautilus.switchLocal() click(Pattern().similar(0.90).firstN(1)) self._nautilus.copy() self._nautilus.switchRemote() self._nautilus.paste() find(Pattern().similar(0.78).firstN(1)) self._nautilus.switchLocal() click(Pattern().similar(0.90).firstN(1)) self._nautilus.copy() self._nautilus.switchRemote() self._nautilus.paste() wait(Pattern().similar(0.90).firstN(1)) dialog = find(Pattern().similar(0.90).firstN(1)) click(dialog.inside().find(Pattern().similar(0.90).firstN(1))) find(Pattern().similar(0.90).firstN(1)) def testDeleteNewdir(self): self._nautilus.upRemote("collection") click(Pattern().similar(0.90).firstN(1)) type(Key.DELETE) wait(Pattern().similar(0.55).firstN(1)) dialog = find(Pattern().similar(0.55).firstN(1)) click(dialog.inside().find(Pattern().similar(0.90).firstN(1))) sleep(1) find(Pattern().similar(0.90).firstN(1)) def testUploadNew(self): self._nautilus.upLocal("/") self._nautilus.openLocal(Pattern().similar(0.90).firstN(1), "up") type("a", KEY_CTRL) sleep(0.5) self._nautilus.copy() self._nautilus.switchRemote() sleep(1) self._nautilus.paste() find(Pattern().similar(0.90).firstN(1)) find(Pattern().similar(0.90).firstN(1)) find(Pattern().similar(0.90).firstN(1)) def testDownloadUploaded(self): self._nautilus.switchRemote() # downloading dirs is broken in Nautilus click(Pattern().similar(0.90).firstN(1)) type(Key.DOWN, KEY_SHIFT) type(Key.DOWN, KEY_SHIFT) type(Key.DOWN, KEY_SHIFT) self._nautilus.copy() self._nautilus.upLocal("/") self._nautilus.openLocal(, "down") self._nautilus.paste() def testRenameFiles(self): self._nautilus.switchRemote() self._nautilus.rename(, u"put_test_renamed.xml", Pattern().similar(0.90).firstN(1)) self._nautilus.rename(, u"put_test_utf8_\u00f6\u00e4\u00fc\u00df.txt", Pattern().similar(0.80).firstN(1)) self._nautilus.rename(Pattern().similar(0.90).firstN(1), u"put_non_utf8_test.txt", Pattern().similar(0.90).firstN(1)) def testCopyFilesRemote(self): self._nautilus.switchRemote() click(Pattern().similar(0.80).firstN(1)) # invert selection type("i", KEY_CTRL | KEY_SHIFT) sleep(1) self._nautilus.copy() self._nautilus.openRemote(Pattern().similar(0.80).firstN(1), "collection") sleep(1) self._nautilus.paste() sleep(1) wait(Pattern().similar(0.60).firstN(1)) find(Pattern().similar(0.60).firstN(1)) find(Pattern().similar(0.60).firstN(1)) def testRenameCollection(self): self._nautilus.upRemote() self._nautilus.rename(Pattern().similar(0.90).firstN(1), "renamed_collection", Pattern().similar(0.90).firstN(1)) nautilus = Nautilus() test = NautilusWebdavTest(nautilus) test.run()