Web自动化之元素定位
1.认识web自动化测试
了解什么是自动化测试
了解为什么要进行自动化测试
掌握自动化测试的分类
掌握web自动化测试的使用条件和场景
了解自动化测试工具的优缺点
了解了解自动化测试的前景和发展方向
web自动化条件和使用范围
· 手动测试已经完成
· 项目周期长
· 需求稳定
使用自动化测试的场景
频繁的回归测试
互联网迭代频繁
传统行业需求变化不大,应用频繁
性能测试
常见的自动化web测试工具
QTP(收费)
QTP是Mercury公司的Quick Test Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的自动化测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等,后来Mecury公司被惠普收购
·
Selenium(开源)
Selenium是ThroughtWorks一个强大的基于浏览器的开源自动化测试工具,通常用来编写web应用的自动化测试
·
RFT(收费)
IBM Rational Test Professional的简称,是一款先进的自动化的功能和回归测试工具,使用与测试人员和GUI开发人员,基础是针对Java,.NET的对象计数和基于web应用程序的录制,回放功能。
·
·
Watir(开源)
使用Ruby实现的开源web自动化测试框架,小巧灵活
·
Sahi(开源)
印度一家公司开发的web自动化测试工具,简单易用,支持Ajax和web2.0
·
QTP与Selenium的比较
· Selenium是开源的、免费的,QTP是商业版、收费的
· Selenium支持java/python/ruby/php等,QTP早期版本只支持vbs
· Selenium只能测试浏览器,QTP则都可以
· Selenium支持操作系统多,而QTP只支持Windows
2.web自动化测试课程简介
2.1 工具的安装与使用
要想让计算机定位到元素,就要使用计算机能够读懂的css选择器或者xpath路径表达式,那么我们就需要用到接下来的几个插件(以下的这些插件都是Firefox浏览器插件,我们需要安装Firefox浏览器,Firefox浏览器的安装配置参考3.1.3第三部分火狐浏览器的安装介绍)
1.安装firebug插件
1.打开firefox浏览器,点击右上角菜单
2.在右上角的搜索栏中输入firebug,并回车
3.在搜索结构中找到firebug,并点击搜索结果之后的安装
4.安装完成后,点击扩展查看右侧列表中是否存在firebug
5.打开firebug插件
6.检查未安装firepath插件
2.安装firepath插件
1.搜索firepath插件按照上述步骤进行操作,进行安装
2.安装完成之后提示重新启动浏览器,点击重启
3.重启浏览器之后打开firebug,在如图所示位置出现firepath,则表示插件安装完成
2.2 css选择器
什么是CSS选择器?
CSS 中,选择器是一种模式,用于选择需要添加样式的元素。计算机能够通过css选择器定位到相应元素,我们在编写自动化测试脚本的时候很多时候是在不断地找到css选择器。
通过id,class等定位元素
通过元素之间的嵌套定位元素
通过元素的属性定位元素
通过父子关系定位元素
通过元素状态定位元素
其他
学习练习网站 css选择器 https://www.runoob.com/cssref/css-selectors.html
2.3 xpath路径表达式
什么是xpath?
- XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力。[1] 起初 XPath 的提出的初衷是将其作为一个通用的、介于XPointer与XSLT间的语法模型。但是 XPath 很快的被开发者采用来当作小型查询语言。
- 什么是XML?
- * XML 指可扩展标记语言(EXtensible Markup Language)
- * XML 是一种标记语言,很类似 HTML
- * XML 的设计宗旨是传输数据,而非显示数据
- * XML 的标签需要我们自行定义。
- * XML 被设计为具有自我描述性。
- * XML 是 W3C 的推荐标准
- W3School官方文档:http://www.w3school.com.cn/xml/index.asp
XML与HTML的区别
xpath路径语句在自动化web测试中的作用
在我们做手动测试的手,我们可以很轻易的找到我们需要点击的输入框、按钮等,但是计算机没有这么智能,于是我们就用到了xpath路径表达式来在一个web页面中定位元素,其语法同css有异曲同工之处,同学们可以在两者之间选择一个,当然最好都掌握
2.3.1 节点之间的关系
1.父(parent)
每个元素以及属性都有一个父。
下面是一个简单的XML例子中,book 元素是 title、author、year 以及 price 元素的父:
<?xml version="1.0" encoding="utf-8"?>
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
2.子(Children)
元素节点可有零个、一个或多个子。
在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:
<?xml version="1.0" encoding="utf-8"?>
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
3.同胞(Sibling)
拥有相同的父的节点
在下面的例子中,title、author、year 以及 price 元素都是同胞:
<?xml version="1.0" encoding="utf-8"?>
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
4.先辈(Ancestor)
某节点的父、父的父,等等。
在下面的例子中,title 元素的先辈是 book 元素和 bookstore 元素:
<bookstore>
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
5.后代(Descendant)
某个节点的子,子的子,等等。
在下面的例子中,bookstore 的后代是 book、title、author、year 以及 price 元素:
<bookstore>
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
2.3.2 xpath路径表达式
XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。
选取节点
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
下面列出了最常用的路径表达式:
表达式 | 描述 |
nodename | 选取此节点的所有子节点。 |
/ | 从根节点选取。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
. | 选取当前节点。 |
.. | 选取当前节点的父节点。 |
@ | 选取属性。 |
在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:
路径表达式 | 结果 |
bookstore | 选取 bookstore 元素的所有子节点。 |
/bookstore | 选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径! |
bookstore/book | 选取属于 bookstore 的子元素的所有 book 元素。 |
//book | 选取所有 book 子元素,而不管它们在文档中的位置。 |
bookstore//book | 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。 |
//@lang | 选取名为 lang 的所有属性。 |
谓语(Predicates)
谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中。
在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:
路径表达式 | 结果 |
/bookstore/book[1] | 选取属于 bookstore 子元素的第一个 book 元素。 |
/bookstore/book[last()] | 选取属于 bookstore 子元素的最后一个 book 元素。 |
/bookstore/book[last()-1] | 选取属于 bookstore 子元素的倒数第二个 book 元素。 |
/bookstore/book[position()<3] | 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。 |
//title[@lang] | 选取所有拥有名为 lang 的属性的 title 元素。 |
//title[@lang=’eng’] | 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。 |
/bookstore/book[price>35.00] | 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。 |
/bookstore/book[price>35.00]/title | 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。 |
选取未知节点
XPath 通配符可用来选取未知的 XML 元素。
通配符 | 描述 |
* | 匹配任何元素节点。 |
@* | 匹配任何属性节点。 |
node() | 匹配任何类型的节点。 |
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
路径表达式 | 结果 |
/bookstore/* | 选取 bookstore 元素的所有子元素。 |
//* | 选取文档中的所有元素。 |
//title[@*] | 选取所有带有属性的 title 元素。 |
选取若干路径
通过在路径表达式中使用“|”运算符,您可以选取若干个路径。
在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
路径表达式 | 结果 |
//book/title | //book/price | 选取 book 元素的所有 title 和 price 元素。 |
//title | //price | 选取文档中的所有 title 和 price 元素。 |
/bookstore/book/title | //price | 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。 |
XPath的运算符(了解)
下面列出了可用在 XPath 表达式中的运算符: