第一个web自动化
来源:互联网 发布:web安全编程 编辑:程序博客网 时间:2024/05/17 07:41
Pyunittest的内容我们看的也差不多了,主体功能大致如此,现在我们来看看selenium如何使用Pyunittest执行自动化测试。
本期目标
- 打开百度,搜索“selenium”,关闭浏览器
- 打开百度,设置搜索的最大条数为20条(默认是10条),关闭浏览器
编写测试案例
先编写我们的测试类,在初始化的时候要做一些处理,代码如下
class Baidu(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(30) self.base_url = "http://www.baidu.com" self.verificationErrors = [] self.accept_next_alert = True
Baidu类继承unittest.TestCase。初始化中实例化webdriver.Chrome()。
self.driver.implicitly_wait(30)#表示等待一段时间。self.base_url = "http://www.baidu.com"#定义我们测试的地址。self.verificationErrors = []#这行定义的是一个错误接受的列表,暂时不用管。self.accept_next_alert = True#这行表示接受弹出的alert窗口。
第一个目标
第一个目标很简单,用ID定位输入框和搜索按钮,具体代码如下
def test_baidu_search(self): driver = self.driver driver.get(self.base_url + "/") driver.find_element_by_id("kw").send_keys("selenium webdriver") driver.find_element_by_id("su").click() time.sleep(2) driver.close()
第二个目标
第二个目标有点麻烦,首先百度高级设置的地址是”http://www.baidu.com/gaoji/preferences.html“,我们定义的基础地址是“http://www.baidu.com”,要在后面把相关的字符串补齐。之后我们要定位到搜索条数的地方,修改为20.修改完毕之后会弹出一个alert窗口,我们要干掉这个窗口后再关闭浏览器。具体代码如下:
def test_baidu_set(self): driver = self.driver driver.get(self.base_url+"/gaoji/preferences.html") m = driver.find_element_by_name("NR") m.find_element_by_xpath("//option[@value='20']").click() time.sleep(2) driver.find_element_by_xpath("//input[@value='保存设置']").click() time.sleep(2) driver.switch_to_alert().accept()
同理,在这个测试案例中,我们要先引用初始化的driver。定位地址时用Python的字符串拼接方法。
m = driver.find_element_by_name("NR")m.find_element_by_xpath("//option[@value='20']").click()
这两行表示定位到下拉选项为20的这个地方,第一行是定义到这个下拉组件中。
<select name="NR" id="nr"><option value="10" selected="">每页显示10条</option><option value="20">每页显示20条</option><option value="50">每页显示50条</option></select>
上面是这个下拉组件的源码,先定位到这个select组件,再使用xpath的方式定位到20条记录这个下拉选项,调用点击按钮选中这条记录。谷歌浏览器的调试工具可以直接复制这条xpath地址(//*[@id=”nr”]/option[2])也可以直接使用这个来定位。
driver.find_element_by_xpath("//input[@value='保存设置']").click()
这条就是直接用xpath方法定位到保存按钮。
driver.switch_to_alert().accept()
这条命令就是接受弹出的alert对话框。
结束测试时清除的函数
每条测试案例开始时都会打开浏览器,然后执行测试案例。执行完毕后需要关闭浏览器,关闭的方法我们写在清除函数中,具体代码如下:
def tearDown(self): self.driver.quit() self.assertEqual([],self.verificationErrors)
开始跑测试案例
最后我们需要吧测试案例跑起来,验证我们写的对不对。在前面的章节已经讲过这里要这么跑了。具体代码如下:
if __name__ == '__main__': testunit = unittest.TestSuite() testunit.addTest(Baidu('test_baidu_search')) testunit.addTest(Baidu('test_baidu_set')) runner.run(testunit)
完整的代码
# -*- coding: utf-8 -*-from selenium import webdriverimport unittest,time,reclass Baidu(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(30) self.base_url = "http://www.baidu.com" self.verificationErrors = [] self.accept_next_alert = True def test_baidu_search(self): driver = self.driver driver.get(self.base_url + "/") driver.find_element_by_id("kw").send_keys("selenium webdriver") driver.find_element_by_id("su").click() time.sleep(2) driver.close() def test_baidu_set(self): driver = self.driver driver.get(self.base_url+"/gaoji/preferences.html") driver.find_element_by_xpath('//*[@id="nr"]/option[3]').click() time.sleep(2) driver.find_element_by_xpath("//*[@id='save']").click() time.sleep(2) driver.switch_to_alert().accept() def tearDown(self): self.driver.quit() self.assertEqual([],self.verificationErrors)if __name__ == '__main__': testunit = unittest.TestSuite() testunit.addTest(Baidu('test_baidu_search')) testunit.addTest(Baidu('test_baidu_set')) runner.run(testunit)
- 第一个web自动化
- 编写第一个自动化脚本
- 第一个自动化测试脚本
- 第一个Web项目
- 第一个Web程序
- 第一个web项目
- 第一个Web前端
- web 第一个程序
- 第一个web service
- 第一个web开发
- python+robotframework --第一个UI自动化脚本
- Web自动化框架LazyUI使用手册(2)--先跑起来再说(第一个测试用例-百度搜索)
- 第一个WEB Server程序
- 第一个简单web布局
- django 第一个web页面
- 第一个Java Web项目
- javascrip第一个web程序
- 第一个Web页面,呵呵
- jmeter之相对路径差异化处理
- CuratorFramework使用
- 登陆Demo--使用UserDeaults实现自动登录,传值,了解数据持久化方法
- GLIDE 的 一些用法
- android源码下载地址
- 第一个web自动化
- Git教程
- KMP算法--c语言实现
- iOS 开发笔记和技巧总结 (四)
- HDOJ 5427 A problem of sorting
- Android应用启动优化:一种DelayLoad的实现和原理
- linux命令学习(5):rmdir命令(删除空目录)
- C#单例模式的三种写法
- Chicken Soup 【我的blog今天有排名了,很开森】