自动化测试:广义上讲一切使用代码或程序来辅助或代替人工测试的行为都认为是自动化测试。
自动化测试作用:提高工作效率,释放人力,可以把人从一些重复性的工作中解放出来。
应用环节:主要应用在回归测试和兼容性测试
适合自动化测试产品特点:
1、需求比较稳定
2、项目周期较长
3、开发的脚本要能重复使用
自动化测试类型:
1、基于UI的自动化测试
2、基于接口的自动化测试
3、基于函数的自动化测试
selenium(硒):是基于web的自动化测试框架,提供了一整套的用于web自动化测试的函数。
该框架由thoughtworks公司于2004年开发,支持多种语言(python、java、ruby、js),支持多种平台
支持目前几乎所有的主流浏览器。
selenium组成:
1、webdriver:是基于web的自动化测试框架,提供了一整套的用于web自动化测试的函数。
2、selenium IDE(了解):基于firefox浏览器的一个插件,可以记录浏览器中的操作,自动化导出可以执行的脚本。
3、selenium grid(了解):用于管理和执行自动化测试脚本的一款工具。
selenium自动化测试环境搭建:
1、安装python及编译器(pycharm)
2、安装浏览器
3、导入selenium包
4、将浏览器驱动文件存放路径添加到系统path变量中
5、将浏览器安装路径添加到系统path变量中
selenium离线安装:
需要下载selenium和urllib3两个库,先导入urllib3再导入selenium
tar格式安装包解压后,使用以下命令导入。
python setup.py build
python setup.py install
注意:浏览器驱动文件与浏览器的版本需要匹配
chrome浏览器驱动文件下载地址:http://chromedriver.storage.googleapis.com/index.html
https://npm.taobao.org/mirrors/chromedriver
火狐浏览器驱动文件对应地址:https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html
下载地址: https://github.com/mozilla/geckodriver/releases
edge浏览器驱动文件下载地址:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
上课用浏览器及驱动文件版本:
firefox:95 geckodriver:0.30
chrome:96 chromedriver:96
元素定位:
1、单元素定位
find_element()
8中元素定位方法:
1、id定位:使用元素的id属性定位
2、name定位:使用元素的name属性定位
3、class定位: 使用元素的class属性定位
class属性值中有空格时,使用全部class属性值定位时,空格必须使用点代替
class属性值有空格时,可以以空格来分隔class属性值,可以使用分隔后的部分class属性值定位
4、tag定位:使用元素标签定位
5、link_text定位:使用超链接文本定位
6、partial_link_text定位:使用超链接部分文本定位
7、css定位:使用元素层叠样式定位
在css定位中,可以使用元素的任意属性定位元素。
在css定位中可以在值的前面加点,表示在使用class属性值定位
在css定位中可以在值的前面加#,表示在使用id属性值定位
8、xpath定位:使用元素相对路径定位
在xpath中可以使用由元素标签组成的相对路径+元素属性定位
在xpath中使用class属性定位时,class属性值中有空格时,空格不能使用点代替
在xpath中可以使用元素上的文字定位
在xpath中可以使用contains关键字定位元素
在xpath中可以使用父子兄弟节点定位:
parent:父节点 preceding:兄节点 descendant:子节点 following:弟节点
注意:单元素定位返回值为定位到的元素对象。
2、多元素定位
find_elements()
8中元素定位方法:
1、id定位:使用元素的id属性定位
2、name定位:使用元素的name属性定位
3、class定位: 使用元素的class属性定位
class属性值中有空格时,使用全部class属性值定位时,空格必须使用点代替
class属性值有空格时,可以以空格来分隔class属性值,可以使用分隔后的部分class属性值定位
4、tag定位:使用元素标签定位
5、link_text定位:使用超链接文本定位
6、partial_link_text定位:使用超链接部分文本定位
7、css定位:使用元素层叠样式定位
8、xpath定位:使用元素相对路径定位
注意:多元素定位返回值为定位到的元素对象所组成的列表。列表中的元素按照定位到的顺序索引从0开始一次递增
如果定位不到元素,返回空列表。
ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
frame框架(标签:iframe或frame)切换:
switch_to.frame()
切换方式:
id切换:switch_to.frame('id属性值')
name切换:switch_to.frame('name属性值')
frame框架对象切换:先定位frame框架,获取frame框架元素对象,switch_to.frame(frame框架元素对象)
索引切换:switch_to.frame(索引值)
当frame框架存在嵌套情况时,必须一层一层切入
切回上层框架:switch_to.parent_frame()
切出框架:switch_to.default_content()
当两个平级的frame框架需要切换时,必须从原框架切出再切入目标框架
网页切换:
1、获取打开网页的句柄:window_handles,得到由网页对象组成的列表。
列表中网页索引按照打开的顺序从0开始依次递增
2、切换网页:switch_to.window(网页列表[索引])
3、关闭网页:close()
网页常用操作:
网页最大化:maximize_window()
驱动浏览后马上浏览器最大化,可以避免网页没有最大化的情况下,页面元素堆叠导致元素无法定位。
网页最小化:minimize_windown()
设置网页大小:set_windown_size(),可以用来测试网页在不同分辨率下的兼容性
刷新网页:refresh()
前进:forword()
后退:back()
获取网页url:current_url,常用于断言
获取网页标题:title,常用于断言
网页截图:get_screenshot_as_file()
当脚本执行失败时将网页截图,可以用于分析脚本失败的原因
元素常用操作:
clear():输入之前先清除一下,可以避免浏览器缓存造成重复输入。
text:获取元素上的文字,可以用来断言
get_attribute('属性名'):获取元素的属性值
判断元素是否被选中:is_selected()
判断元素是否可用:is_enable()
判断元素是否显示:is_display()
鼠标操作:
在ActionChains库下提供了鼠标双击、右击、悬停、拖拽等方法
右击:context_click()
双击:double_click()
悬停:move_to_element()
按住鼠标左键不松开:click_and_hold()
拖拽某个元素多某个元素上:drag_and_drop()
拖拽某个元素到某个坐标点:drag_and_drop_by_offset()
将鼠标从当前位置移动到某个坐标:move_by_offset()
移动到距离某个元素左上角一定像素点位置:move_to_element_with_offset()
发送某个键到当前焦点元素:send_keys()
发送某个键到指定元素上:send_keys_to_element()
松开鼠标:release()
执行以上方法:perform()
firefox测量移动像素点插件:measure-it
模拟键盘操作:
ActionChains库下有key_down()和key_up()
在sendkeys中接口Keys模块,模拟键盘操作
警告窗口处理:
1、获取警告窗口对象:
alert_window = switch_to.alert
确定:accpect()
取消:dismiss()
输入:send_keys()
获取提示信息:text