目录
一、自动化测试
1.单元自动化测试
2.接口自动化测试
3.UI自动化测试
4.自动化测试工具Selenium
5.Webdriver
二、一个简单自动化脚本的构成
三、一些基本的webdriver API
1.一个元素的定位
1.1通过id定位元素
1.2通过name定位元素
1.3通过class_name定位
1.4通过tag_name定位
1.5 通过link_text定位
1.6通过partial_link_text定位
1.7通过xpath定位
1.8通过css_selector定位
2.操作测试对象
2.1click 点击对象
2.2send_keys 在对象上模拟按键输入
2.3clear 清除对象输入的文本内容
2.4submit 提交
2.5text 用于获取元素的文本信息
3.鼠标点击与键盘输入
4.添加等待
4.1固定等待
4.2智能等待
5.打印信息
5.1打印title
5.2打印url
6.对浏览器的操作
6.1浏览器最大化
6.2设置浏览器宽、高
6.3操作浏览器的前进、后退
6.4控制浏览器滚动条
7.键盘事件
7.1键盘按键用法
7.2键盘组合键用法
8.鼠标事件
9.定位一组元素
10.多层框架/窗口定位
11.下拉框处理
12.alert、confirm、prompt 的处理
13.DIV块的处理
14.上传文件操作
一、自动化测试
自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最 后评估运行结果。将人为驱动的测试行为转化为机器执行的过程
1.单元自动化测试
使用JUnit进行单元测试
2.接口自动化测试
项目前期接口开发完成开始进行测试,适合接口变动比较小的项目
常见的接口自动化测试工具有,RobotFramework,JMeter,SoapUI,TestNG+HttpClient,Postman 等。
接口自动化的特点:
可在产品前期,接口完成后介入
用例维护量小
适合接口变动较小,界面变动频繁的项目
3.UI自动化测试
对系统的界面元素进行操作,用脚本实现模拟用户的使用,完成功能的 正常和异常测试
UI自动化的特点:
用例维护量大
页面相关性强,必须后期项目页面开发完成后介入
UI测试适合与界面变动较小的项目
UI自动化的好处:
可以进行回归测试
节约了资源
是一种可靠的测试方法,机器不会出错
可以完成很多繁琐的工作
能够完成手工测试无法完成的测试
4.自动化测试工具Selenium
支持多语言:Java、C#、ruby、JavaScript、Python
支持多平台:Linux、Windows、Mac,可以进行兼容性测试
支持多浏览器:Chrome、FireFox、Edge、Opera、Safari
支持分布式测试:SeleniumGrid
5.Webdriver
Selenium RC 在浏览器中运行 JavaScript 应用,会存在环境沙箱问题,而WebDriver可以跳出 JavaScript的沙箱,针对不同的浏览器创建更健壮的,分布式的,跨平台的自动化测试脚本。基于特定语言(Java,C#,Python,Ruby,Perl,JavaScript等)绑定来驱动浏览器对Web元素进行操作和验证。
webdriver的工作原理:
- 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为 webdriver的remote server。
- 客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格 式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
- Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。
二、一个简单自动化脚本的构成
- from selenium import webdriver 导入webdriver工具包,这样就可以使用里面的API browser = webdriver.Edge() 获得被控制浏览器的驱动,这里是获得Edge的,当然还可以获得Chrome浏览器,不过要想使这一段 代码有效,必须安装相应的浏览器驱动。
- browser.find_element(by=By.ID, value=’kw’).send_keys(‘自动化测试’)通过元素的ID定位想要操作的元素,并且向元素输入相应的文本内容 。
- browser.find_element(by=By.ID, value=’su’).click()通过元素的ID定位到元素,并进行点击操作。 browser.quit() 退出并关闭窗口。
三、一些基本的webdriver API
1.一个元素的定位
以百度输入框为例
1.1通过id定位元素
如果id存在,那么可以全局唯一的定位一个元素
1.2通过name定位元素
只有当name存在并且全局唯一才可以定位一个元素
1.3通过class_name定位
只有当class name存在并且全局唯一才可以定位一个元素
1.4通过tag_name定位
只有当tag name存在并且全局唯一才可以定位一个元素
事实上使用tag name定位百度搜索框时是定位不成功的,会 错,因为只有当tag name全局唯一时才可以进行定位
1.5 通过link_text定位
必须是链接,而且链接内容是全局唯一的才可以定位到元素
1.6通过partial_link_text定位
必须是链接,而且链接内容是全局唯一的才可以定位到元素
1.7通过xpath定位
所有元素都可以通过xpath定位
1.8通过css_selector定位
2.操作测试对象
定位之后需要对这个元素进行操作。是鼠标点击 还是键盘输入,或者清除元素的内容,或者提交表单等。这个取决于定位元素需要进行的下一步操作。
2.1click 点击对象
2.2send_keys 在对象上模拟按键输入
2.3clear 清除对象输入的文本内容
2.4submit 提交
2.5text 用于获取元素的文本信息
3.鼠标点击与键盘输入
4.添加等待
4.1固定等待
引入time 包,就可以在脚本中自由的添加休眠时间了,这里的休眠指固 定休眠
4.2智能等待
通过添加implicitly_wait() 方法就可以方便的实现智能等待;implicitly_wait()的用法比time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!