什么是自动化测试?
从测试的行为本质上去分析,功能测试和自动化测试没有区别。唯一区别,一个是人工操作,一个是由代码工具执行。 自动化测试主要分为三个层次:单元测试自动化、接口测试自动化和UI测试自动化。
单元测试自动化
调用测量的类或方法,根据类或方法的参数传递相应的参数并返回结果。最终断言判断返回的结果是否与预期结果相等。相等,测试通过,不相等,测试失败。因此,在单元测试中, 里面主要是关注的代码实现与逻辑,这个一般是由开发人员完成。
接口测试自动化
根据接口文档创建设计测试用例,根据测试用例向接口提出请求,根据返回的结果数据判断状态代码,根据响应的msg判断接口测试是否通过。因此,接口测试侧重于数据。只要数据是正确的,这个功能基本上完成了一半以上,剩下的就是展示数据。
UI测试自动化
UI测试自动化分为Web测试自动化和App测试自动化,这种测试更加贴近用户的行为,模拟用户点击了某个按钮,向输入框输入了什么。比如一个登陆功能,用户输入了账号密码点击到哪里,是可以看见登陆有没有成功的。单Web和App自动化就并不知道用户刚才的点击有没有生效。所以这个时候就要数据证明了,比如登陆成功后页面会跳转到主页面,页面上会显示“欢迎 xxxx”。这个就是登陆成功的有效数据证明,于是,Web和App自动化登陆成功后,就会去获取这个数据进行断言。如果相等,测试通过。如果不相等,测试是吧。Web和App测试自动化关注的是用户的操作行为,页面上的按钮和输入框是否可用。从测试的行为本质上去分析,功能测试和自动化测试没有区别。唯一的区别:一个是人工操作,一个是由代码工具执行。
哪些适合自动化测试?
- 软件需求变动不频繁
- 项目周期较长
- 自动化测试脚本可重复使用
满足以上就可以对项目进行自动化测试了
Selenium 简介
2016年7月Selenium3.0发布了beta版,它经历了三个大版本,1.0->2.0->3.0。它不是由一个单独工具构成的,而是由一些插件和类库组成的。我们现在用的是Selenium3。
测试环境搭建
安装python
官网:https://www.python.org
在windows下傻瓜式安装,注意勾选 Add Python 3.9 to PATH
安装完成之后,在windows命令提示符下输入python可进入Python Shell模式。
安装selenium
在windows命令提示符中输入
pip install selenium
安装最新版selenium包。
安装浏览器驱动
selenium3支持以下浏览器
浏览器 | 驱动使用 |
---|---|
Opera浏览器 | driver = webdriver.Opera() |
Chorme浏览器 | driver = webdriver.Chrome() |
Firefox浏览器 | driver = webdriver.Firefox() |
Internet Explorer浏览器 | driver = webdriver.Ie() |
Edge浏览器 | driver = webdriver.Edge() |
WebDriver API
元素定位:WebDriver提供了8中元素定位方法,如下:
定位法 | 使用 |
---|---|
id定位 | find_element_by_id() |
name定位 | find_element_by_name() |
tag定位 | find_element_by_tag_name() |
class定位 | find_element_by_class_name() |
link_text | find_element_by_link_text() |
partial link定位 | find_element_by_partial_link_text() |
XPath定位 | find_element_by_xpath() |
CSS_selector定位 | find_element_by_css_selector() |
- 以上方法可以定位单个元素,如果我们想要定位一组元素的时候,再
element
后面加s即可,获取到的是一个列表,通过下标即可定位元素。
WebDriver常用方法
控制浏览器窗口大小
from selenium import webdriver
driver = webdriver.Chrome()
# 设置浏览器宽、高 使用maximize_windows()可以全屏
driver.set_window_size(480, 800)
# 退出
driver.quit()
控制浏览器后退、前进
from selenium import webdriver
driver = webdriver.Chrome()
# 回退到上一页
driver.back()
# 前进到下一页
drive.forword()
# 退出
driver.quit()
模拟浏览器刷新
# 模拟浏览器刷新
drive.refresh()
- clear() 清除文本
- send_keys(values) 模拟按键输入
- click() 单击元素
- submit() 提交表单
- size 返回元素尺寸
- text 返回元素文本
- get_attribute(name) 获取属性值
- is_displayed() 设置该元素是否用户可见
鼠标操作
perform() 执行ActionChains类中存储的所有行为
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停
键盘操作
send_keys(Keys.BACK_SPACE) 删除键
send_keys(Keys.SPACE) 空格键
send_keys(Keys.TAB) 制表键
send_keys(Keys.ESCAPE) 回退键
send_keys(Keys.ENTER) 回车键
send_keys(Keys.CONTROL,‘a’) 全选(ctrl+a)
send_keys(Keys.CONTROL,‘c’) 复制(ctrl+c)
send_keys(Keys.CONTROL,‘v’) 粘贴(ctrl+v)
send_keys(Keys.CONTROL,‘x’) 剪切(ctrl+x)
send_keys(Keys.F1) F1键
……
结语
最近才开始接触selenium模块,以上是我刚开始接触到的一些东西,后续还会更新……希望大家多多关注!