目录
背景:
有页面的地方就可以使用UI自动化,当然如果是只要测试后端业务的话,使用接口自动化测试就好了,给予合理的入参,返回正确的响应就行,但是如果我们要测试的很多场景是页面上的,那么我们就应该使用UI自动化了。
简介:
这里我们使用Selenium进行自动化测试,使用unittest进行用例管理,使用DDT进行数据驱动
前提条件:
①安装python环境
②下载webdriver放入path环境的目录下
Chrome:http://chromedriver.storage.proxy.ustclug.org/index.html
Firefox:Releases · mozilla/geckodriver · GitHub
IE:http://selenium-release.storage.proxy.ustclug.org/index.html
③下载selenium框架:pip install selenium
一、导入和使用webdriver驱动
from selenium import webdriver
driver = webdriver.Chrome()#这里使用谷歌的浏览器驱动,缺省情况即为path路径下的谷歌驱动,如果有字符串地址,即使用地址里的谷歌驱动
driver.get('https://www.baidu.com')
二、使用unittest进行用例管理
测试用例有四个概念
①testCase测试用例:继承TestCase类,用例都是通过开头以test来识别的,如果要顺序则使用序号,如test001即可。
②testSuite测试用例集:把多个测试用例集合起来一起执行,可以使用addTest来把用例加载到测试套件上,也可使用loader加载器批量的加载
③testRunner测试用例运行器:用于运行测试用例
④TestFixture测试脚手架:用于初始化测试用例及清理和释放资源
1,测试用例
测试类继承unittest.TestCase类,每一条方法是一个测试用例,都是以test开头
断言方式可使用python自带的assert,也可使用unittest的self.assert方法(断言方式会丰富些)
2,不使用加载器加载测试用例
3,使用加载器加载测试用例
4、ddt进行数据驱动
5,使用fixture脚手架
setup用于测试用例前的环境搭建,unittest中不允许使用__init__进行初始化,所以只能用setup
teardown用于测试用例后的资源释放
skip进行选择性跳过测试用例,因为有些用例暂时不应该执行,如开发尚未开发完成,bug提交待修复的时候
6、selenium的其它操作
三、selenium的基本常识
1、selenium 是什么
是支持web浏览器自动化的一系列工具和库的综合项目
可以使用Selenium实现基于web的UI自动化测试
测试阶段划分:
单元测试 白盒测试
集成测试 灰盒测试 接口测试
系统测试 黑盒测试 功能测试UI
验收测试
2、selenium 的核心是什么?
Selenium的核心是WebDriver,这是一个编写指令集的接口
支持主流的编程语言 java python csharp javascripts ruby...
3、selenium 自动化测试工具
下载python
pip install selenium
下载驱动,放入path路径中 或者把浏览器地址作为参数添加到浏览器后面的参数
验证方式:
cmd>chromedriver
from selenium import webdriver
driver = webdriver.Chrome()
4、自动化测试步骤测试步骤:
①获取浏览器对象 driver = webdriver.Chrome()
②操作浏览器,使用浏览器的一些方法 driver.method()
③元素定位的方法找到web元素 webElement
④操作web元素,使用元素的方法,webElement.method()
5、selenium的常用操作有哪些
基本操作
driver.current_url 获取当前浏览器的地址
driver.switch_to.alter.accept() 确认按钮
driver.switch_to.alter.dismiss()取消按钮
driver.get(url)打开浏览器
driver.close()关闭当前窗口
driver.quit()关闭浏览器,并清理临时文件
driver.forward()前进
driver.back()后退
driver.refresh()刷新
.click()
.clear()
.send_keys('')
获取句柄
driver.window_handles 获取当前driver驱动打开的所有窗口的句柄
driver.current_window_handle 获取当前窗口的句柄
切换到新窗口
for handle in self.driver.window_handles:
if handle != driver.current_window_handle:
self.driver.switch_to.window(name/handle)
frame网页框架
定义:HTML页面中的一种框架,主要是在当前的页面中指定区域显示另一页面元素
进入frame框架
framelist = driver.find_elements_by_tag_name('frame')#获取所有的frame框架索引集合
self.driver.switch_to.frame(framelist[0]) 进入第一个框架
driver.switch_to.frame('窗口名字')或id
离开frame框架
driver.switch_to.parent_frame() 去往父框架
driver.switch_to.default_content()去往默认框架,即开始的框架
定位web元素的八种方式
driver.find_elements_by_id()
driver.find_element_by_name()
driver.find_element_by_class_name() 根据class
driver.find_element_by_tag_name() 根据标签名字
driver.find_element_by_link_text() 根据链接名字来定位
driver.find_element_by_partial_link_text() 根据模糊链接名字定位
driver.find_element_by_xpath() 有绝对路径xpath和相对路径full xpath的方法 强大
driver.find_element_by_css_selector() 用的少,比xpath简洁灵活 强大
八种方式每一种都有两种方式
driver.find_element(By.ID,'a')
driver.find_element_by_id('a')
八种方式每一种都有可以获取单个元素或者获取元素集合
如何进行下拉菜单操作
depart= driver.find_element_by_name("")
Select(depart).select_by_value("")
如何获取浏览器对象
webdriver.Chrome()
webdriver.Ie()
webdriver.FireFox()
webdriver.Safari()