{ "info": { "author": "gerrywen", "author_email": "blog@gerrywen.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# pypise\nWebUI automation testing framework based on Selenium and unittest.\n\n#### \u4ecb\u7ecd\uff1a\n pypise\u57fa\u4e8eselenium\uff08webdriver\uff09\u8fdb\u884c\u4e86\u7b80\u5355\u7684\u4e8c\u6b21\u5c01\u88c5\uff0c\u6bd4selenium\u6240\u63d0\u4f9b\u7684\u65b9\u6cd5\u64cd\u4f5c\u66f4\u7b80\u6d01\u3002\n\n#### \u7279\u70b9\uff1a\n* \u9ed8\u8ba4\u4f7f\u7528CSS\u5b9a\u4f4d\uff0c\u540c\u65f6\u652f\u6301\u591a\u79cd\u5b9a\u4f4d\u65b9\u6cd5\uff08id\\name\\class\\link_text\\xpath\\css\uff09\u3002\n* \u672c\u6846\u67b6\u53ea\u662f\u5bf9selenium\uff08webdriver\uff09\u539f\u751f\u65b9\u6cd5\u8fdb\u884c\u4e86\u7b80\u5355\u7684\u5c01\u88c5\uff0c\u7cbe\u7b80\u4e3a\u5927\u7ea630\u4e2a\u65b9\u6cd5\uff0c\u8fd9\u4e9b\u65b9\u6cd5\u57fa\u672c\u80fd\u591f\u80dc\u4efb\u4e8e\u6211\u4eec\u7684web\u81ea\u52a8\u5316\u6d4b\u8bd5\u3002\n* \u4ee5\u6d4b\u8bd5\u7c7b\u4e3a\u5355\u4f4d\uff0c\u81ea\u52a8\u6253\u5f00\u548c\u5173\u95ed\u6d4f\u89c8\u5668\uff0c\u51cf\u5c11\u6d4f\u89c8\u5668\u7684\u6253\u5f00/\u5173\u95ed\u6b21\u6570\uff0c\u8282\u7701\u65f6\u95f4\u3002\n* \u81ea\u52a8\u751f\u6210/report/\u76ee\u5f55\uff0c\u4ee5\u53caHTML\u6d4b\u8bd5\u62a5\u544a\u751f\u6210\u3002\n* \u81ea\u5e26\u65ad\u8a00\u65b9\u6cd5\uff0c\u65ad\u8a00title\u3001URL \u548c text\u3002\n\n#### \u5b89\u88c5\u8bf4\u660e\uff1a\n* Python 3.5+ : https://www.python.org/\n* Selenium 3.12.0 : https://pypi.python.org/pypi/selenium\n* \u8fdb\u5165pypise/\u76ee\u5f55\uff0c\u6267\u884c:\n\n```\n> python setup.py install\n```\n\n#### \u4f8b\u5b50\uff1a\n\n\u8bf7\u67e5\u770bdemo/test_case.py\u76ee\u5f55\n\n```python\nimport pypise\n\nclass BaiduTest(pypise.TestCase):\n\n def test_baidu(self):\n ''' baidu search key : pypise '''\n self.open(\"https://www.baidu.com/\")\n self.type(\"#kw\", \"pypise\")\n self.click(\"#su\")\n self.assertTitle(\"pypise_\u767e\u5ea6\u641c\u7d22\")\n\nif __name__ == '__main__':\n runner = pypise.TestRunner()\n runner.run()\n```\n\n\u8fd0\u884c\u6d4b\u8bd5\u7528\u4f8b\u8bf4\u660e\uff1a\n* \u6d4b\u8bd5\u7528\u4f8b\u6587\u4ef6\u547d\u540d\u5fc5\u987b\u4ee5\u201c__test__\u201d\u5f00\u5934\u3002\n* \u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f7f\u7528 __Chrome__ \u6d4f\u89c8\u5668\u8fd0\u884c\u6d4b\u8bd5\u7528\u4f8b\u3002\n* \u5143\u7d20\u5b9a\u4f4d\u65b9\u5f0f\u9ed8\u8ba4\u4f7f\u7528 CSS \u8bed\u6cd5 `#kw`, \u4e5f\u53ef\u4ee5\u663e\u793a\u7684\u4f7f\u7528 `css=>#kw`\u3002\n* pypise\u7684TestCase\u7c7b\u4e2d\u9ed8\u8ba4\u5c01\u88c5\u4e86`assertTitle`\u3001`assertUrl` \u548c `assertText`\u7b49\u65ad\u8a00\u3002\n* `TestRunner()` \u9ed8\u8ba4\u5339\u914d\u5f53\u524d\u76ee\u5f55\u4e0b\"test*.py\"\u7684\u6587\u4ef6\u5e76\u6267\u884c\u3002\u5f53\u7136\u4e5f\u53ef\u4ee5\u6307\u5b9a\u6d4b\u8bd5\u76ee\u5f55\uff0c\u4f8b\u5982\uff1a\nTestRunner(\"path/you/project/test_case/\") # \u6ce8\u610f\u7528\u659c\u7ebf\"/\"\u8868\u793a\u8def\u5f84\u3002\n* \u6267\u884c`run()`\u65b9\u6cd5\u8fd0\u884c\u6d4b\u8bd5\u7528\u4f8b\u5e76\u751f\u6210\u6d4b\u8bd5\u62a5\u544a\uff0c\u5728\u8c03\u8bd5\u6d4b\u8bd5\u7528\u4f8b\u8fc7\u7a0b\u4e2d\u53ef\u4ee5\u4f7f\u7528 `debug()` \u65b9\u6cd5\u5c06\u4e0d\u4f1a\u751f\u6210HTML\u6d4b\u8bd5\u62a5\u544a\u3002\n\n\n#### \u652f\u6301\u7684\u6d4f\u89c8\u5668\u53ca\u9a71\u52a8\uff1a\n\n\u6307\u5b9a\u8fd0\u884c\u7684\u6d4f\u89c8\u5668\uff1a\n\n```python\nimport pypise\n\nclass YouTest(pypise.TestCase):\n\n @classmethod\n def setUpClass(cls):\n cls.driver = Pypise(\"chrome\")\n\n def test_case(self):\n #\u2026\u2026\n\n```\n\n\u652f\u6301\u7684\u6d4f\u89c8\u5668:\n\n```python\ncls.driver = Pypise(\"firefox\") #Firefox\ncls.driver = Pypise(\"chrome\") # Chrome\ncls.driver = Pypise(\"ie\") #IE\ncls.driver = Pypise(\"opera\") #Opera\ncls.driver = Pypise(\"edge\") #Edge\ncls.driver = Pypise(\"chrome_headless\") #Chrome headless\u6a21\u5f0f\n```\n\n\u6d4f\u89c8\u5668\u9a71\u52a8\u4e0b\u8f7d\u5730\u5740\uff1a\n\ngeckodriver(Firefox):https://github.com/mozilla/geckodriver/releases\n\nChromedriver(Chrome):https://sites.google.com/a/chromium.org/chromedriver/home\n\nIEDriverServer(IE):http://selenium-release.storage.googleapis.com/index.html\n\noperadriver(Opera):https://github.com/operasoftware/operachromiumdriver/releases\n\nMicrosoftWebDriver(Edge):https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver\n\n==========================================================\n\n#### \u5143\u7d20\u5b9a\u4f4d:\n\npypise\u652f\u6301\u591a\u79cd\u5b9a\u4f4d\u65b9\u5f0f\uff0cid\u3001name\u3001class\u3001link text\u3001xpath\u548ccss\u3002\u628a\u5b9a\u4f4d\u65b9\u6cd5\u4e0e\u5b9a\u4f4d\u5185\u5bb9\u4e00\u4f53\uff0c\u5199\u8d77\u66f4\u52a0\u7b80\u6d01\u3002\n```html\n