Web UI自动化测试之基础知识篇

2019-08-01   出处:LuckyFrame测试平台  作/译者: 小熊  


最近LuckyFrame QQ官方群里很多小伙伴在问有关Web UI自动化测试的事情,接下来的一段时间,小熊会系统和大家分享下。


今天这篇文章主要是针对UI自动化 零基础 或者经验较少的小伙伴哦~~


在平台上做UI自动化,可能首先,我们需要知道,需要具备哪方面技能才好下手?


小熊认为主要是以下几点:

1:前端相关技术

HTML、JavaScript 基础知识

2:合适的工具选型

Selenium WebDriver 的基本原理和元素定位方法、元素操作方法。

3:一门编程语言

就像前面说的,selenium支持多种语言,根据个人情况以及项目的开发语言来选择,建议python 或java。


对以上前3点有一定的认识后,在开始自动化,就相对轻松啦。


第一点, HTML、JavaScript,这两个都是构成页面的基础,所以基本是必学内容。

小伙伴们可以在网上查找相关资料学习,这里就不在赘述啦。

第二点, 针对web页面,目前Selenium WebDriver 是主流工具,功能也十分强大,LuckFrame的Web UI自动化,也是基于 Selenium WebDriver 的基础上进行了封装来实现的。


所以说,学习和掌握 Selenium WebDriver是必须滴。。。

Selenium Webdriver的实现原理 大致就是测试代码通过 Selenium提供的API请求浏览器驱动,然后 浏览器驱动去操控对应的浏览器,并返回响应结果。


所以我们要学习的就是如何写 测试代码,调用 Selenium中提供的API

这个命令就是指元素定位和操作方法,下面一起来看看。

关于使用 Selenium WebDriver 元素定位的方法有很多,具体如何选择呢?

首先我们来认识下这八大定位法吧!


在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式共八种


findElement 语法示例

  • ID: driver.findElement( By.id (<elementID>))

  • Name: driver.findElement( By.name (<elementName>))

  • className: driver.findElement( By.className (<elementClassName>))

  • tagName: driver.findElement( By.tagName (<htmlTagName>))

  • linkText: driver.findElement( By.linkText (<linkText>))

  • partialLinkText: driver.findElement( By.partialLinkText (<partialLinkText>))

  • xpath: driver.findElement( By.xpath (<xpathQuery>))

  • css: driver.findElement( By.cssSelector (<cssSelector>))

下面来简单介绍下每种定位方法

1. By.name()

使用标签的name属性来定位元素。

2. By.id()

使用标签的id属性来定位元素。

3. By.tagName()

该方法可以通过元素的标签名称来查找元素。

该方法跟之前两个方法的区别是,这个方法搜索到的元素通常不止一个,所以一般建议结合使用findElements方法来使用。

4. By.className()

className属性是利用元素的css样式表所引用的伪类名称来进行元素查找的方法。

注意:使用className来进行元素定位时,有时会碰到一个元素指定了若干个class属性值的“复合样式”的情况,这种情况就必须结合后面要介绍的cssSelector方法来定位了

5. By.linkText()

即通过超文本链接上的文字信息来定位元素

6. By.partialLinkText()

部分链接文字进行匹配,如果不能准确知道超链接上的文本信息或者只想通过一些关键字进行匹配时,可以使用这个方法来通过部分链接文字进行匹配。

注意:当页面存在多个部分链接内容时,findElement只返回第一个。

7. By.xpath()

XPath是XML Path的简称,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用XPath的语法来定位页面元素。此方法非常强大,基本可以定位到任意元素。

精确定位

绝对路径: 绝对路径以单/号表示, 让Xpath解析引擎从文档的根节点开始解析。 火狐浏览器xpath定位就是

相对路径: 以//表示,则表示让xpath引擎从文档的任意符合的元素节点开始进行解析。

模糊定位: 包含以下三种方法

a. 用contains关键字

b. 用start-with

c. 用Text关键字

注意:关于xpath这种定位方式,webdriver会将整个页面的所有元素进行扫描以定位我们所需要的元素,所以这是一个非常费时的操作,如果你的脚本中大量使用xpath做元素定位的话,将导致你的脚本执行速度大大降低,所以请慎用。

8. By.cssSelector()

cssSelector这种元素定位方式跟xpath比较类似,但执行速度较快,而且各种浏览器对它的支持都相当到位,所以功能也是蛮强大的。


关于元素定位,我们来总结下,各种方式在选择的时候应该怎么选择:

1. 当页面元素有id属性时,最好尽量用id来定位。

2. xpath很强悍,很方便,但定位性能不是很好,所以还是尽量少用。如果确实少数元素不好定位,可以选择xpath或cssSelector。cssSelector效率优于xpath。

3. 当要定位一组元素相同元素时,可以考虑用tagName或name。

4. 当有链接需要定位时,可以考虑linkText或partialLinkText方式。


关于项目中的元素定位,可以基于以上的一些知识点以及项目自身的特点,进行元素定位,并通过调试,针对这个项目总结 一套通用的元素定位方式。

一个项目基本都是使用的统一UI框架,只要每个元素的定位方法了解了,那么其他的页面,基本只是复制就OK了。


关于元素定位这段主要参考以下这篇文章,作者有比较详细的示例介绍,可以参考学习。

https://www.cnblogs.com/alikaimen/p/5568437.html

元素定位好了,接下来就是元素操作,这个相对定位要简单些,常见的几个控件的操作如输入框、下拉框、单选框、多选框、按钮、框架的切换,页面打开等等。相关资料很多,自行百度哈。


下面这个文章对常用控件做了说明:

https://www.cnblogs.com/andrew209/p/9016907.html


LuckyFrame官网的UI自动化中做了说明,这里小熊就不再说啦,大家可以查看这里:

http://www.luckyframe.cn/book/yhsc/wbuism-32.html


关于第三点,一门语言的学习,主要是出于UI自动化的稳定性、流畅性来考虑;

比如,有些功能只有新增或修改,不能删除,为了保证自动化每天运行,那么就可能需要些手段操作数据库删除或还原数据到可用状态。

通过这种方式来保证每次自动化可以全部自动的顺畅执行,而不需要人工干预。

但这就需要具备些编码基础能力。


LuckFrame平台也提供了专门的rancase()方法,用于是支持UI自动化步骤嵌套接口自动化步骤的。


这个后续篇章会具体介绍。


以上三点是小熊认为UI自动化需要具备的基本知识,小伙伴们如果有不同见解欢迎交流。



欢迎给测试窝投稿或参与内容翻译工作,请邮件至editors@testwo.com。也欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,并与我们的编辑和其他窝友交流。
190°|1898 人阅读|1 条评论

苹果笔测  2019-08-02


登录 后发表评论