すべてのテスト ケースを手動でエクスポートせずに、Selenium IDE で作成されたテスト ケースを Python に変換するにはどうすればよいですか? その仕事のためのコマンドラインコンバーターはありますか?
最後に、Selenium RC と Python ビルドを unittest で使用して、Web サイトをテストしたいと考えています。
どうもありがとう。
アップデート:
コンバーターの作成を開始しましたが、すべてのコマンドを実装するには作業が多すぎます。もっと良い方法はありますか?
xml.dom.minidom インポート解析から クラス SeleneseParser: def __init__(自己、selFile): self.dom = parse(selFile) def getTestName(self): return self.dom.getElementsByTagName('title')[0].firstChild.data def getBaseUrl(自己): return self.dom.getElementsByTagName('link')[0].getAttribute('href') デフォルト getNodes(self): コマンド = [] ノード = self.dom.getElementsByTagName('tbody')[0].childNodes ノード内のノードの場合: node.nodeType == node.TEXT_NODE および node.data の「\n」の場合: 継続する node.nodeType == node.COMMENT_NODE の場合: cmds.append(ノード.データ) node.nodeType == node.ELEMENT_NODE の場合: cmd = [] node.childNodes の c の場合: c.nodeType == node.ELEMENT_NODE の場合: len(c.childNodes) == 1 の場合: cmd.append(c.childNodes[0].data) そうしないと: cmd.append("") cmds.append(コマンド) コマンドを返す クラス PythonConverter: def __init__(self,sourceFile): self.parser = SeleneseParser(sourceFile) self.dest = u'# -*- コーディング: utf-8 -*-\n\nselenium から import selenium\nunittest、time、re をインポート\n' def getHeader(自己): self.dest += u'\nclass %s(unittest.TestCase):\n' % self.parser.getTestName() self.dest += u'\tdef setUp(self):\n\t\tself.verificationErrors = []\n' self.dest += u'\t\tself.selenium = selenium("localhost", 4444, "*chrome", "%s")\n' % self.parser.getBaseUrl() self.dest += u'\t\tself.selenium.start()\n' デフォルト getContent(self): self.dest += u'\n\tdef test_%s(self):\n\t\tsel = self.selenium\n' % self.parser.getTestName() ノード = self.parser.getNodes() ノード内のノードの場合: タイプ (ノード) がリストの場合: コマンド、ターゲット、値 = ノード [0]、ノード [1]、ノード [2] cmd == 'ストア' の場合: self.dest += u'\t\t%s = "%s"\n' % (値,ターゲット) elif cmd == 'clickAndWait': self.dest += u'\t\tsel.click(u"%s")\n\t\tsel.wait_for_page_to_load("30000")\n' % (ターゲット) elif コマンド == 'タイプ': self.dest += u'\t\tsel.%s(u"%s", u"%s")\n' % (cmd,target,value) elif コマンド == 'select': self.dest += u'\t\tsel.select(u"%s", u"%s")\n' % (ターゲット,値) elif cmd == 'verifyTextPresent': self.dest += u'\t\ttry: self.failUnless(sel.is_text_present(u"%s"))\n\t\tAssertionError 以外、e: self.verificationErrors.append(str(e))\n ' % 目標 elif cmd == 'verifySelectedLabel': self.dest += u'\t\ttry: self.assertEqual(u"%s", sel.get_selected_label(u"%s"))\n\t\tAssertionError 以外、e: self.verificationErrors.append(str (e))\n' % (値,ターゲット) elif cmd == 'verifyValue': self.dest += u'\t\ttry: self.assertEqual(u"%s", sel.get_value(u"%s"))\n\t\tAssertionError 以外、e: self.verificationErrors.append(str (e))\n' % (値,ターゲット) elif cmd == 'verifyText': self.dest += u'\t\ttry: self.assertEqual(u"%s", sel.get_text(u"%s"))\n\t\tAssertionError 以外、e: self.verificationErrors.append(str (e))\n' % (値,ターゲット) elif cmd == 'verifyElementPresent': self.dest += u'\t\ttry: self.failUnless(sel.is_element_present(u"%s"))\n\t\tAssertionError 以外、e: self.verificationErrors.append(str(e))\n ' % (目標) そうしないと: self.dest += u'\t\tsel.%s(u"%s")\n' % (cmd,target) #printコマンド、ターゲット、値 そうしないと: self.dest += u'\t\t#%s\n' % ノード デフォルト getFooter(self): self.dest += u'\n\tdef teaDown(self):\n\t\tself.selenium.stop()\n\t\tself.assertEqual([], self.verificationErrors)\n' self.dest += u'\nif __name__ == "__main__":\n\tunittest.main()' デフ変換(自己): self.getHeader() self.getContent() self.getFooter() self.dest を返す p = PythonConverter('test_case.html') print p.convert()