基于selenium和unittest的webui自动化测试框架。

pypise的Python项目详细描述


pypise

WebUI automation testing framework based on Selenium and unittest.

介绍:

pypise基于selenium(webdriver)进行了简单的二次封装,比selenium所提供的方法操作更简洁。

特点:

  • 默认使用CSS定位,同时支持多种定位方法(id\name\class\link_text\xpath\css)。
  • 本框架只是对selenium(webdriver)原生方法进行了简单的封装,精简为大约30个方法,这些方法基本能够胜任于我们的web自动化测试。
  • 以测试类为单位,自动打开和关闭浏览器,减少浏览器的打开/关闭次数,节省时间。
  • 自动生成/report/目录,以及HTML测试报告生成。
  • 自带断言方法,断言title、URL 和 text。

安装说明:

> python setup.py install

例子:

请查看demo/test_case.py目录

importpypiseclassBaiduTest(pypise.TestCase):deftest_baidu(self):''' baidu search key : pypise '''self.open("https://www.baidu.com/")self.type("#kw","pypise")self.click("#su")self.assertTitle("pypise_百度搜索")if__name__=='__main__':runner=pypise.TestRunner()runner.run()

运行测试用例说明:

  • 测试用例文件命名必须以“test”开头。
  • 默认情况下使用 Chrome 浏览器运行测试用例。
  • 元素定位方式默认使用 CSS 语法 #kw, 也可以显示的使用 css=>#kw
  • pypise的TestCase类中默认封装了assertTitleassertUrlassertText等断言。
  • TestRunner() 默认匹配当前目录下"test*.py"的文件并执行。当然也可以指定测试目录,例如: TestRunner("path/you/project/test_case/") # 注意用斜线"/"表示路径。
  • 执行run()方法运行测试用例并生成测试报告,在调试测试用例过程中可以使用 debug() 方法将不会生成HTML测试报告。

支持的浏览器及驱动:

指定运行的浏览器:

importpypiseclassYouTest(pypise.TestCase):@classmethoddefsetUpClass(cls):cls.driver=Pypise("chrome")deftest_case(self):#……

支持的浏览器:

cls.driver=Pypise("firefox")#Firefoxcls.driver=Pypise("chrome")# Chromecls.driver=Pypise("ie")#IEcls.driver=Pypise("opera")#Operacls.driver=Pypise("edge")#Edgecls.driver=Pypise("chrome_headless")#Chrome headless模式

浏览器驱动下载地址:

geckodriver(Firefox):https://github.com/mozilla/geckodriver/releases

Chromedriver(Chrome):https://sites.google.com/a/chromium.org/chromedriver/home

IEDriverServer(IE):http://selenium-release.storage.googleapis.com/index.html

operadriver(Opera):https://github.com/operasoftware/operachromiumdriver/releases

MicrosoftWebDriver(Edge):https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver

==========================================================

元素定位:

pypise支持多种定位方式,id、name、class、link text、xpath和css。把定位方法与定位内容一体,写起更加简洁。

<formid="form"class="fm"action="/s"name="f"><spanclass="bg s_ipt_wr quickdelete-wrap"><inputid="kw"class="s_ipt"autocomplete="off"maxlength="255"value=""name="wd">

定位方式(推荐使用 CSS):

# 默认支持CSS语法driver.type(".s_ipt","pypise")#cssdriver.type("#su","pypise")#cssdriver.type("id=>kw","pypise")#iddriver.type("class=>s_ipt","pypise")#class定位driver.type("name=>wd","pypise")#namedriver.type("xpath=>//*[@class='s_ipt']","pypise")#xpathdriver.type("xpath=>//*[@id='kw']","pypise")#xpathdriver.click_text("link_text=>新闻")#link text (点击百度首页上的"新闻"链接)

==========================================================

css选择器参考手册: http://www.w3school.com.cn/cssref/css_selectors.asp

测试报告

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaFX:绑定未意外工作   java按顺序遍历两个二叉树,比较哪一个更大   maven如何避免多次加载librxtxSerial。所以在爪哇   google app engine如何在GAE java中为自定义用户数据库创建cookie?   java将内容添加到浮点数组的末尾,如下所示   令牌“+”上的java语法错误,AssignmentOperator无效   java LibGDX Sprite不同时使用“Rotate”和“setRotation”旋转   java字符串数组无需同步?   java如何将击键Z添加到按键(KeyEvent e)以将球跳跃/重新绘制到新的随机位置?(使用了KeyListener演示。)   java如何使用jnlp文件在控制面板的“添加或删除程序”中设置“版本”   java捕获两个异常,一个是另一个的超类   ant在更新到Java8之后,在JiBX绑定[bind]java期间出错。lang.IllegalStateException:加载类java时出错。lang.CharSequence   安卓缓冲区错误转换结果java时出错。朗努尔。。。和JSON ParserError解析数据组织。json。JSONException   java如何在Firebase中从实时数据库检索数据?   java将Jsch放入连接池的细节