自动化测试(一)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Selenium RC与Selenium Webdriver
Selenium RC Selenium RC的结构复杂,因为服务器 需要启动在开始试运行前。 Selenium服务器充当浏览器和Selenese 的命令之间的中间人 Selenium WebDriver webdriver架构比Selenium RC简单,因 为它控制着从操作系统层面的浏览器。 webdriver直接相互作用,以在浏览器 和使用浏览器的引擎进行控制。
IDE:Firefox插件
IDE是在core的基础上的一种应用, 通过UI
实现类似QTP/Winner的脚本录制回放功能; Selenium IDE是通过监听用户对html页面 的操作来录制脚本的,是真正能够监听用户 对html页面的操作的录制工具
Selenium简介
RC(Remote Control) Selenium RC模式,是客户端利用各种编程 语言,通过网络向Selenium Server发送指 令,Selenium Server接收到测试指令后, 启动浏览器并向其发出JavaScript调用实现 对Html页面的全面追踪,并通过网络把执行 结果返回给调用者 Selenium Server的实现原理是其打开浏览 器时,把自己的JavaScript文件嵌入网页中。 然后Selenium的网页通过frame嵌入目标网 页。这样,就可以使用Selenium的 JavaScript对象来控制目标网页
Selenium RC的脚本执行速度较慢,因 为它使用了Javascript来与RC互动
Selenium RC不能支持无头,因为它需 要一个真正的浏览器一起工作
webdriver的速度更快,因为它直接交 互使用的浏览器。
webdriver可以支持无头执行
它是一个简单的API 不能测试移动应用程序
复杂,API相比,RC有点大 可测试iPhone/Android应用程序
序进行定位
id、name是最常用并且最容易的方式 Css、xpath往往会与id、name配合使用 Xpath是最脆弱的方式
ui Services compones
units
对象定位
对象定位
对象定位--id
对象定位--name
对象定位--xpath
操作测试对象
清除元素内容
浏览器操作
对象定位
对象的定位和操作是自动化测试的核心部分,
其中操作又是建立在定位的基础上,因此对 象的定位又显得特别重要。 对象的定位分为以下几种: Id Name Class name Tag name Link text Xpath:部分浏览器会提供计算xpath的插 件。(firefox、chrome) Css selector
敏捷测试与自动化测试
为什么引入自动化测试
敏捷开发的最大特点是高速迭代,有周期 性,并且能够及时、持续的响应客户的频 繁反馈。伴随着频繁的迭代,测试人员需 要频繁的重新进行测试。在此由于系统是 不稳定的系统,也造成了测试的不稳定, 我们不知道这次的故事是否会影响到系统 的其他功能。在敏捷测试过程中,项目后 期不会给予测试人员很多的集成测试时间, 而且测试人员也无法在每次的迭代完成之 后对之前的迭代进行回归测试,基于这一 点,就需要自动化测试在每个迭代完成时 对之前的迭代进行集成测试
Name定位:
Class name定位:
tag name定位:
link text定位:
Xpath定位:
find_elements_by_xpath()
find_elements_by_css_selector()
css selector定位:
对象定位
对象的定位要依据idnamecssxpath的顺
Name定位:
Class name定位:
tag name定位:
link text定位:
Xpath定位:
find_element_by_xpath()
find_element_by_css_selector()
css selector定位:
对象定位-一组元素定位
Id定位:
对象定位-单个元素定位
Id定位:
find_element_by_id() find_element_by_name() find_element_by_class_name() find_element_by_tag_name() find_element_by_link_text() find_element_by_partial_link_text()
Clear()
模拟按键输入
Send_keys(“”)
单击元素
Click()
提交表单
Submit()
获取大小
Size
获取文本内容
Text
获取相关属性值
get_attribute(name)
查看对象是否可见
is_displayed()
获取对象属性
get_attribute()
浏览器操作
设置最大化
driver.maximize_window()
设置浏览器大小
driver.set_window_size(宽, 高)
设置浏览器前进后退
driver.back()
driver.forward()
关闭浏览器
driver.quit()
打开浏览器
driver.get(“”)
层级定位
元素有多层父元素,当定位子元素时需要先定位父元素,然后定位到子
元素。
driver.find_element_by_id('').find_element_by_link_text('')
界面中多个frame,多个frame处于父级子级关系,先找到父级的frame1,
再找到子级的frame2.(可通过frame的id及name进行定位)
设置等待时间
固定休眠时间
Sleep(时间)
超时等待,设置最长等待时间 implicitly_wait(时间)
设置每隔一段时间内检测当前页面元素是否存在
WebDriverWait(driver,时间).until( ) WebDriverWait(driver,时间).until_not()
Selenium简介
WebDriver WebDriver 启动目标浏览器,并绑定到指 定端口。该启动的浏览器实例,做 web driver的remote server。 Client 端通过CommandExcuter 发送 HTTPRequest 给remote server 的侦听端口 (通信协 议: the webriver wire protocol) Remote server 需要依赖原生的浏览器组 件(如: IEDriver.dll,chromedriver.exe),来转 化转化浏览器的native调用
自动化测试类型
UI自动化 性能自动化
接口自动化
单元测试自动化
自动化测试优势、劣势
优势:
节约人力,代码维护好,可自动执行
节约时间,测试脚本可在晚上进行执行
回归测试,提高软件质量
代码可复用
自动化测试优势、劣势
劣势:
代码维护成本高,对测试人员的要求高
不易做探索性测试
find_elements_by_id() find_elements_by_name() find_elements_by_class_name() find_elements_by_tag_name() find_elements_by_link_text() find_elements_by_partial_link_text()
Selenium安装(基于Python语言)
下载并安装Python
python-2.7.10.msi
配置python环境变量
环境变量:Path 变量值:C:\Python27
下载setuptools【python基础包工具】
python easy_install.py
安装pip
python setup.py install
Selenium简介
Selenium Core:JavaScript Framework
Selenium Core是Selenium的核心部分,它
由一些纯js代码组成, 可以运行在 windows/linux的不同browser上,我们就 是通过这些js代码,才可以实现程序对浏 览器的控制。
selenium-server-standalone-2.39.0.jar 在selenium-server-standalone-2.39.0.jar目录下 执行:java -jar selenium-server-standalone2.39.0.jar
安装Chrome driver
把chromedriver.exe放置到chrome安装目录下, 并配置chromedriver.exe环境变量
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(Enter) send_keys(Keys.CONTROL,'a') 全选(Ctrl+A) send_keys(Keys.CONTROL,'c') 复制(Ctrl+C) send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X) send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
内容摘要
自动化测试简介 自动化测试类型
自动化测试优势、劣势
自动化测试适用范围
自动化测试工具
Selenium简介
自动化测试框架
自动化测试简介
自动化测试是使用自动化测试工具或编 写代码来替代手工测试的测试类型。
自动化测试只是辅助手工测试,并不能 完全替代手工,自动化更多的是去做验证型 测试而非探索性测试,目的是将手工测试从 重复的劳动中脱离出来,节约时间、人力成 本,并且在新增一个功能时,可以对其相关 所有功能做回归测试,提高软件的质量。
Java/python/ruby/C# 等
免费开源
是否容易上手
是否存在GUI 是否支持录制
容易
存在 支持
有代码基础的容易
不存在 支持
Selenium简介
Selenium是一款基于web应用程序的开源测试
工具。Selenium测试直接运行在浏览器中, 就像真正的用户在操作一样。它支持Firefox、 ie、Chrome等众多浏览器。它同时支持JAVA、 C#、Ruby、Python、PHP、Perl等众多的主流 语言。
进入C:\Python27\Scripts
Leabharlann BaiduEasy_install.exe pip
Selenium安装(基于Python语言)
安装selenium
进入C:\Python27\Scripts,执行pip install U selenium
安装java
下载并安装selenium服务端
不适合频繁需求变更的项目
自动化测试适用范围
需求变更不频繁 回归测试
测试人员有一定的编码基础
产品型项目,项目周期长
重复工作量大
自动化测试工具
QTP
浏览器 IE/FireFox
selenium
IE/FireFox/Chrome/O pera
语言
是否收费
VB
有破解版,有部分插 件是需要收费的
鼠标事件
右击:
context_click()
双击:
double_click()
拖动:
drag_and_drop(source,target)
鼠标悬停:
move_to_element()
按下鼠标左键在一个元素上:
click_and_hold()
键盘事件
send_keys(Keys.BACK_SPACE) 删除键(BackSpace) send_keys(Keys.SPACE) 空格键(Space) send_keys(Keys.TAB) 制表键(Tab)
driver.switch_to_frame(“frame1") driver.switch_to_frame("frame2")
窗口处理
获取当前窗口 current_window_handle 获取所有窗口 window_handles