一、自动化测试简介
最后验收
需求分析 - 系统测试
架构模块设计 - 集成测试
编码 - 单元测试
自动化测试的应用场景
1 任务明确,且不会频繁变动
2 软件需求变更少
3 项目周期长,测试脚本可以复用
4 有类似项目
常用的测试工具
1 QTP : 主要是用于回归测试和测试同一软件的新版本
2 Robot Framework : python 编写的功能自动化测试框架, 良好的可扩展性
3 Selenium : 是一个用于 Web 应用程序测试的工具, 支持多平台、多浏览、多语言去实现自动化测试
Selenium :
1 开源、免费
2 支持主流浏览器: FireFox , Chrome , IE
3 跨平台: Windows , Linux , Mac
4 多语言: Java , Python ,Ruby , Php , JS
5 对web支持良好, 丰富简单的API
二、web 调试工具和环境搭建
1 环境安装
python + pip + selenium
安装Chrome webdriver
http://blog.csdn.net/zhaoyabei/article/details/52355021
2 firefox 前端工具介绍
fireBug:FireFox 浏览器下的一套开发类插件 , 查看页面上的元素,从而根据其属性进行定位
3 html , js , xml , css
三、元素定位及操作
获取元素
元素名称 | webdriver API | 说明 |
id | find_element_by_id() | |
name | find_element_by_name() | |
class name | find_element_by_class_name() | |
tag name | find_element_by_tag_name() | |
link text | find_element_by_link_text() | |
partial link text | find_element_by_partial_link_text() | |
xpath | find_element_by_xpath() | |
css selector | find_element_by_css_selector() |
元素操作
方法 | 说明 |
clear | 清除元素内容 |
send_keys | 模拟按键输入 |
click | 点击 |
submit | 提交表单 |
XPath 用于在 XML 文档中通过元素和属性进行导航
xpath节点类型:
元素,属性,文本,命名空间,指令处理,注释及文档,
xpath:通过路径表达式从XML文档中选取节点或节点设置
表达式 | 结果 | 说明 |
/xxx | 选取根节点xxx | |
/xxx/yyy | 根据绝对路径选择元素 | |
//xxx | 整个文档扫描,找到所有xxx元素 | |
//xxx/yyy | 所有父元素为xxx的yyy元素 | |
. | 选取当前节点的父元素节点 | |
.. | 选取父元素地址 | |
//xxx[@id] | 选取所有xxx元素中有id属性的元素 | |
//xxx[@id=yyy] | 选取所有xxx元素id属性为yyy的元素 |
xpath:通过路径表达式从XML文档中选取节点或节点设置
表达式 | 结果 |
//*[count(xxx)=2] | 统计xxx元素个数=2的节点 |
//*[local-name()='xxx'] | 找到tag为xxx的元素 |
//*[starts-with(local-name(),'x')] | 找到所有tag以x开头的元素 |
//*[contains(local-name(),'x')] | 找到所有tag包含x的元素 |
//*[string-length(local-name()) = 3] | 找到所有tag长度为3的元素 |
//xxx | //yyy | 多个路径查找 |
四、ActionChains类与输入事件
1 from selenium.webdriver.common.action_chains import ActionChains
2 ActionChains(driver):用于生成模拟用户行为
3 perform():执行存储行为
鼠标事件 | |
表达式 | 说明 |
context_click | 右击事件 |
double_click | 双击事件 |
drag_and_drop | 拖动 |
move_to_element() | 鼠标停在一个元素上 |
click_and_hold | 按下鼠标左键在一个元素上 |
键盘事件:send_keys() | |
from selenium.webdriver.common.keys import Keys | |
表达式 | 说明 |
send_kyes(Kyes.BACK_SPACE) | 退格键 |
send_kyes(Kyes.CONTRL, 'a') | 全选 |
send_kyes(Kyes.CONTRL, 'v') | 粘贴 |
send_kyes(Kyes.CONTRL, 'c') | 复制 |
send_kyes(Kyes.CONTRL, 'x') | 剪切 |
send_kyes(Kyes.ENTER) | 回车 |
五、 对话框和多窗口
测试脚本中的等待方法
1 等待是为了使脚本执行更加稳定
2 常用的休眠方式:time模块的sleep方法
selenium模块中的等待方法 | |
implicitly_wait() | 设置webdriver等待时间 |
WebDriverWait | 等待条件满足或者超时后退出 , from selenium.webdriver.support.ui import WebDriverWait |
Alter对象 | |
switch_to_alert() | 切到alter,返回一个alter对象 |
accept | 确认 |
dismiss | 取消 |
send_keys() | 有输入框才能使用,否则报错 |
EG :
from selenium import webdriver browser = webdriver.Chrome() browser.get("http://www.baidu.com") browser.find_element_by_id("kw").send_keys("selenium") browser.find_element_by_id("su").click() #browser.quit()