Web 自动化
自动化:由机器设备代替人为自动完成指定目标的过程
自动化测试:由程序代替人为去验证程序功能的过程
为什么要进行自动化测试?
- 解决-回归测试
- 压力测试
- 兼容性测试
- 提高测试效率,保证产品质量
什么阶段开始自动化测试?
功能测试完毕(手工测试)
手工测试:就是由人去一个个输入测试用例,然后观察结果;
自动化测试所属分类(代码可见度)
- 黑盒测试
- 灰盒测试
- 白盒测试
提示: Web 自动化测试属于黑盒测试(功能测试)
优点:
- 较少时间内运行更多的测试用例
- 自动化脚本可重复运行
- 减少人为的错误
- 测试数据存储
缺点:
- 不能取代手工测试
- 手工测试比自动化测试发现的缺陷更多
- 测试人员技能要求
3. 自动化测试分类
- Web(UI)自动化测试
- 接口-自动化测试
- 移动(app)-自动化测试
- 单元测试-自动化测试
什么Web 项目适合做自动化测试?
- 需求变动不频繁
- 项目周期长
- 项目需要回归测试
如何进行 Web 自动化测试?
- QTP(收费)
- Selenium (开源)
- Jmeter(开源,Web,接口,性能)
- LoadRunner(收费.Web,性能)
- Robot framework 基于Python 可扩展的( 关键字驱动) 自动化测试框架
主流工具-汇结:
Web 自动化测试:selenium,robot framework
App端:Appium MonkeyRunner,UIautomation
PC(win32):QTP
接口:Jemeter,Postman,HttpUnit,RESTClient
云平台:Testin Testbird
性能测试: Jemeter,LoadRunner
Selenium 特点
- 开源
- 跨屏图
- 多个浏览器测试
- 多语言
- 成熟稳定 google 百度 腾讯 都在用
- 功能强大
Selenium 家族
Selenium Grid 分布式测试,超大规模测试
重点:
- Selenium IDE
- Selenium2.0(WebDriver)
Selenium IDE 安装与运行
Selenium IDE :是一个 Firefox 插件,用于记录和播放用户与浏览器的交互.(录制 Web 操作脚本)
为社么要学习?
安装地址:
Version: 2.9.1.1
https://addons.mozilla.org/en-GB/firefox/addon/selenium-ide/versions/
火狐浏览器地址:
下载地址:
- Win版:http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/35.0.1/win32/zh-CN/Firefox Setup 35.0.1.exe
- MAC版:http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/35.0.1/mac/zh-CN/Firefox 35.0.1.dmg
- Linux版:http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/35.0.1/linux-x86_64/zh-CN/firefox-35.0.1.tar.bz2
运行: Ctrl+Alt+S
35 版本兼容性最好
定位调试软件
FireBug 重要
FireBug 差价事火狐一款插件,能够调试所有网站语言,同时也可以快速定位HTML 页面中的元素;
作用:定位元素
Selenium IDE 提示
录制脚本时候是录制鼠标和键盘的所有再浏览器操作,那么脚本会出现多余的步骤,有时候我们需要手动填写脚本或修改脚本,所有我们有必要对Selenium IDE 脚本编辑与操作有所了解;
Selenium IDE 脚本编辑与操作【了解】
目的:手动修改或编写脚本(采用录制方式很容易记录出多余的操作)
单机click 是没有值
编辑一行命令
插入一行命令
右键鼠标 “insert new command” 插入一条新的命令
插入注释
右键“insert new comment” 插入注释,紫色字体
命令执行
选定要执行的命令点击单个执行按钮即可,注意:有一些命令必须依赖于前面命令的运行结果才能成功执行,否则会导致执行失败
4. Selenium IDE 常用命令[了解]
4.1 open(url)命令
作用:打开指定的URL ,URL 可以为相对或是绝对URL
Target:要打开的URL;value 值为空
- 当Target 为空,将打开Base URL 中填写的页面
- 当Target 不为空且值为相对路径,将打开Base URL +Target 页面.如,假设 Base URL 为 http://www.zhi97.com, 而Taget为/about.aspx,则执行open命令时,将打开http://www.zhi97.com/about.aspx
- 当Target以http://卡头是,将忽略Base URL,直接打开Target的网址;
4.2 pause(waitTime)
作用:暂停脚本运行
waitTime:等待时间,单位为ms;//Target=1000
4.3 goBack()
作用:模拟单机浏览器的后退按钮;
提示:由于没有参数,所以Target和Value可不填
4.4 refresh()
作用:刷新当前页;
提示:由于没有参数,所以Target和Value可不填;
4.5 click(locator)
作用:单击一个链接,按钮,复选框或单选按钮;
提示:如果该单击事件导致新的页面加载,命令将会加上后缀"AndWait",即"clickAndWait",或"waitForPageToLoad"
4.6 type(locator,value)
作用:向指定输入域中输入指定值;也可为下拉框,复选框和单选框按钮赋值
Target:元素的定位表达式;
Value:要输入的值;
4.7 close()
作用:模拟用户单击窗口上的关闭按钮
提示:由于没有参数,所以Target和Value可不填
#### 回顾 Selenium 家族
需要关注的
1.Selenium2.0(WebDeiver)
提示:
- Selenium2.0=Selenium1.0+WebDriver
- Selenium1.0 和WebDeiver 原属于两个不同的东西,由于某种原因已合并
- Selenium2.0以后我们简称WebDriver
WebDriver(Selenium2.0)
什么是WebDriver
- WebDriver 是一种用于web应用程序的自动测试工具;
- 它提供了一套友好的API
- WebDriver 完全就是一套类库,不依赖任何测试框架,除了必要的浏览器驱动
说明:
API:应用编程接口说明(WebDriver类库内封装非常多的方法,要使用这些方法,旧需要友好的调用命名规则)
支持的浏览器
- Firefox(FirefoxDriver) 推荐
- IE(InternetExplorerDriver)
- Opera(OperaDriver)
- Chrome(ChromeDriver)
- safari(SafariDriver)
- HtmlUnit(HtmlUnit Driver)
Firefox,Chrome:对元素定位和操作有良好的支持,同时对JavaScript支持也非常好.
IE:只能再Windows平台运行,所有浏览器中运行速度最慢
HtmlUnit:无GUI(界面),运行速度最快
推荐原因
- Selenium IDE
- FireBug
- 对WebDriver API 支持良好
为什么要学习 WebDriver ?
- 自动化测试概念
- WebDriver-定位元素
- WebDriver-操作元素
4. 环境搭建
4.1 Selenium 安装,卸载,查看命令
安装: pip install selenium == 2.48.0
- 通用的Python包管理工具.提供了对Python包的查找下载,安装,卸载的功能
- install: 安装命令
- elenium==2.48.0:指定安装selenium2.48.0 版本(如果不指定版本默认为最新版本)
卸载:pip uninstall selenium
查看:pip show selenium
4.2 火狐浏览器 推荐
FireFox 48 以上版本
Selenium3.X+ FireFix 驱动-geckodriver
Firefox 48 以下版本
Selenium2.X 内置驱动
谷歌浏览器
Selenium2.x/3.x+Chrome 驱动
每个浏览的驱动版和其他浏览器的不一致
但要与对应的一致
4.5 浏览器-总结
各个驱动下载地址:http://www.seleniumhq.org/download/
- 浏览器的版本和驱动版本要一致
(如果是32bit浏览器而Driver 是64bit则会导致脚本运行失败)
- 浏览器驱动下载好后需要添加Path 环境变量中,或者直接放到Python 安装目录,因为Python以添加到Path 中
- 推荐使用火狐浏览器(24,35)版本
WebDriver-元素定位
目标了解元素各种定位方法
掌握 id,name,class_name,tag_name,link_text,partial_link_text 定位的使用
为什么要学习元素定位方式
- 让程序操作指定元素,旧必须先找到此元素
- 程序不像人类用眼睛直接定位到元素
- WebDriver 提供了八种定位元素方式
定位方式
- id
- name
- class_name
- tag_name
- link_text
- partial_link_text
- Xpath
- css
定位方式分类-汇总
- id,name,class_name:元素属性定位
- tag_name:元素标签名称
- link_text,partial_link_text:超链接定位(a标签)
- Xpath:元素路径定位
- css:css选择器定位
id 定位方法 find_element_by_id()
id 定位实现 步骤分析
- 导入selenium 包->from selenium import webdriver
- 导入time 包->from time import sleep
- 实例化火狐浏览器->driver=webdriver.Firefox()
- 打开注册A.html->driver.get(url)
- 调用id 定位方法->driver.find_element_by_id("")
- 使用send_keys()方法发送数据-<.send_keys("admin")
- 暂停3秒->sleep(3)
- 关闭浏览器->quit()
说明:为了接下来更好而学习体验,我们先暂时使用send_keys()和quit()方法.再2.4节元素操作详解
# ctrl+alt+空格快速导包
name 定位
driver.find_element_by_name(名称).send_key(赋值)
class 定位
driver.find_element_by_class_name()
说明:HTML 规定了class 来指定元素的类名,用法和name,id 类似
前提:元素有class 属性
通过class_name定位电话号码A,并发送1861111111
tag_name 定位
说明:HTML本质就是由不同的tag(标签)组成,而每个tage 都是指同一类,所以tag 定位效率低.一般不建议使用;tag_name 定位就是通过标签名来定位
find_element_by_tag_name()
返回:符合条件的第一个标签
如何获取第二个元素?稍后(2.8节)讲解
2.5 link_text 定位
说明:link_text定位于前面4个定位有所不同,它专门用来定位超链接文本(<a"> 标签 </a">)
方法:find_element_by_link_text()
说明:需要传入a 标签全部文本
- 参考id定位
- 点击->click()
2.6 partical_link_text 定位
说明:partial_link_text 定位是对 link_text 定位的补充,partial_like_text 为模糊匹配; link_text全部匹配
2.7 find_element[s]_by_XXX()
作用:
- 查找定位所有符合条件的元素
- 返回的定位元素格式为数组(列表)格式
说明:
- 列表数据格式的读取需要指定下标(下标从0开始)
操作(2.4 tag_name)
说明:使用tag_name 获取第二个元素(密码框)
代码: driver.find_elements_by_tag_name("input")[1].send_keys("123456")
什么是 Xpath?
- Xpath 即为XML Path 的简称,它是一种用来确定XML文档中某部分位置的语言.
- HTML 可以看做是 XML 的一种实现,所以 Selenium 用户可以使用这种强大的语言在Web 应用中定位元素.
XML: 一种标记语言,用于数据的存储和传递.后缀.xml
提示:Xpath 为强大的语言,那是因为它有非常灵活定位策略;
思考
Xpath 有哪些策略呢?
2.Xpath 定位策略(方式)
- 路径-定位
- 绝对路径
- 相对路径
- 利用元素属性-定位
- 层级于属性结合-定位
- 属性于逻辑结合-定位
Xpath 定位 方法
driver.find_element_by_xpath()
2.1 路径/绝对路径.相对路径
1. 绝对路径:从最外层元素到指定元素之间所有经过元素层级路径;如:/html/body/div/p[2]
提示:
1.1. 绝对路径以/开始
1.2. 使用Firebug可以快速生成,元素Xpath绝对路径
2. 相对路径: 从第一个符合条件元素开始(一般配合属性来区分);
2.1. 相对路径以//开始,后边必须跟标签名称或*
2.2. 使用FireBug扩展插件FirePath 可快速生成,元素相对路径
3.Xpath 路径内使用属性时,必须要使用@修饰
提示:为了方便练习Xpath,可以在FireBug内安装扩展插件-FireFinder 插件;
3. 火狐浏览器->组件管理器->搜索FireFinder
2.2 利用元素属性
说明:快速定位元素,利用元素唯一属性;
示例://*[@id='userA']
2.3 层级于属性结合
说明:要找的元素,没有属性,但它的父级有
示例://*[@id='p1']/input
2.4 属性与逻辑结合
说明:解决元素之间个数相同属性重名问题
示例://*[@id='telA' and @class='telA']
2.5 Xpath-延伸
//*[text()='xxx'] #文本内容是xxx的元素
//*[starts-with(@attribute,'xxx')] #属性以xxx开头的元素
//*[contains(@attribute,'xxx')] #属性中含有xxx的元素
FireFox 旧版本下载地址:
https://ftp.mozilla.org/pub/firefox/releases/
CSS 定位
3.1 什么是 CSS
CSS(Cascading Style Sheets)是一种语言,它用来描述HTML 和XML 的元素显示样式;
css语言书写两个格式:
卸载HTML语言中.卸载单独文件中 后缀.css
而在CSS语言中有CSS选择器(不同的策略选择元素),在Selenium 中也可以使用这种选择器;
提示:
- 在selenium 中极力推荐CSS 定位,因为它比XPath 定位速度要快
- CSS 选择器语法非常强大,在这里我们只学习在测试中常用的几个
CSS定位方法
driver.find_element_by_css_selector()
CSS 定位常用策略(方式)
- id选择器
- class选择器
- 元素选择器
- 属性选择器
- 层级选择器
id选择器
说明:根据元素id 属性来选择
格式:#id 如: #userA<选择id属性值为userA的所有元素>
class选择器
根据元素class属性来选择
格式:
.class 如: .telA <选择class属性值为telA的所有元素>
元素选择器
根据元素的标签名选择
格式:
element 如:input<选择所有input元素>
属性选择器
根据元素的属性名和值来选择
格式:
[attribute=value]如:[type='password']<选择所有type属性值为password的值>
层级选择器
根据元素的父子关系来选择
格式:
element>element 如:p>input .返回所有p元素下所有的input元素
提示:
">" 可以用空格代替 如:p input 或者 p [type='password']
CSS 延伸
1.input[type^='p'] type属性以p字母开头的元素
2.input[type$='d'] type属性以d字母结束的元素
3.input[type*='w'] type属性包含w字母的元素
Xpath 和 CSS 类似功能对比
定位(另一种写法)-延伸 [了解]
说明:调用find_element()方法,通过By来声明定位的方法,并且传入对应的方法和参数(了解)
导入By类
导包:from selenium.webdriver.common.by import By
driver.find_element(By.XPATH,...)
原find的底层
Web 自动化的更多相关文章
- web自动化工具-开篇
web自动化工具-开篇 最近几年,前端技术风一样的速度迭代更新,各种框架工具雨后春笋般涌现,作为一个平凡的开发者,也只能在洪流中沉沉浮浮,微不足道,以前前端叫做切图仔.美工,如今改了称号叫前端工程师, ...
- web自动化工具-liveStyle
web自动化工具-liveStyle LiveStyle. The first bi-directional real-time edit tool for CSS, LESS and SCSS主要用 ...
- web自动化工具-livereload
web自动化工具-livereload livereload是一个很神奇的工具,主要解放了F5键,监听文件变动,整个页面自动刷新.可搭载gulp等构建工具使用.和liveStyle 针对样式文件相比, ...
- web自动化工具-Browsersync
web自动化工具-Browsersync browser-sync才是神器中的神器,和livereload一样支持监听所有文件.可是和livereload简单粗暴的F5刷新相比,browsersync ...
- Selenium Web 自动化 - 项目实战(三)
Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解 3.1 解析新增页面目录 3.2 解析新增测试用例目录 3. ...
- Web自动化框架LazyUI使用手册(2)--先跑起来再说(第一个测试用例-百度搜索)
作者:cryanimal QQ:164166060 上篇文章中,简要介绍了LazyUI框架,本文便来演示,如何从无到有快速搭建基于lazyUI的工程,并成功运行第一个测试用例. 本文以百度搜索为例,选 ...
- Web自动化框架LazyUI使用手册(1)--框架简介
作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...
- Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)
标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...
- Web自动化框架搭建——前言
1.web测试功能特性 a.功能逻辑测试(功能测试),这一块所有系统都是一致的,比如数据的添加.删除.修改:功能测试案例设计感兴趣和有时间的话可以另外专题探讨: b.浏览器兼容性测试,更重要的是体验这 ...
- [置顶] RFS的web自动化验收测试——常见问题指引
引言:什么是RFS——RobotFramework+Selenium2library,本系列主要介绍web自动化验收测试方面. ( @齐涛-道长 新浪微博) 下面的内容还没整理好,先发个问题解决机制吧 ...
随机推荐
- HZNU-ACM寒假集训Day5小结 线段树 树状数组
线段树 什么时候用线段树 1.统计量可合并 2.修改量可合并 3.通过统计量可直接修改统计量 一句话:满足区间加法即可使用线段树维护信息 理解Lazy Tage 蓝色是要把信息及时维护的节点,红色是本 ...
- 51Nod1049 最大子段和
我们来先看题: N个整数组成的序列a1,a2,a3,-,an,求该序列如ai+ai+1+-+aj的连续子段和的最大值.当所给的整数均为负数时和为0. 例如:-2,11,-4,13,-5,-2,和最大的 ...
- 2、用优化器使loss最小
2.tf.train.AdamOptimizer()函数是Adam优化算法:是一个寻找全局最优点的优化算法,引入了二次方梯度校正. tf.train.AdamOptimizer.__init__( l ...
- 一名资深架构师规划Java程序员五年职业生涯指南
每个程序员.或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来.今天我给大家分享的是一篇来自阿里大牛对五年工作经验程序员的职业建议,希望 ...
- 【转】centos7轻松搭建文件服务器
1.安装apache服务器 yum install httpd 2:启动httpd服务 service httpd start 3:查看httpd服务器的版本 4:修改访问端口和文件路径,以防端口冲突 ...
- Tensorflow学习教程------普通神经网络对mnist数据集分类
首先是不含隐层的神经网络, 输入层是784个神经元 输出层是10个神经元 代码如下 #coding:utf-8 import tensorflow as tf from tensorflow.exam ...
- java 的二分算法
二分算法 就是在 一组 有序 数组中 通过中间值(数组中间的那个数字)的方法 找到 某个数的下标,如果大于中间值 ,则在中间值与最大值之间 的中间值再比较. public class two { // ...
- Arduino IIC 主从设备连接通信
目的: 实现Arduino主从设备之间的互相IIC通信,掌握IIC通信协议的使用方法. 器材: Arduino UNO R3 一块 Arduino Nano 三块 面包板 导线 3K ...
- mysql建表语句和数据类型
1.创建表的完整语法 create table 表名( 字段名称 数据类型[(长度) 约束条件], 字段名称 数据类型[(长度) 约束条件] ) 必须的:字段名 数据类型 表名 可选的:长度 约束 ...
- String 字符串,heredoc,nowdoc
一个字符串可以用 4 种方式表达: 单引号 双引号 heredoc 语法结构 nowdoc 语法结构(自 PHP 5.3.0 起) 单引号 定义一个字符串的最简单的方法是用单引号把它包围起来(字符 ' ...