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 ())

Name: driver.findElement( By.name ())

className: driver.findElement( By.className ())

tagName: driver.findElement( By.tagName ())

linkText: driver.findElement( By.linkText ())

partialLinkText: driver.findElement( By.partialLinkText ())

xpath: driver.findElement( By.xpath ())

css: driver.findElement( By.cssSelector ())

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

  1. By.name()

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

  1. By.id()

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

  1. By.tagName()

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

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

  1. By.className()

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

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

  1. By.linkText()

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

  1. By.partialLinkText()

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

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

  1. By.xpath()

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

精确定位

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

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

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

a. 用contains关键字

b. 用start-with

c. 用Text关键字

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

  1. 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自动化需要具备的基本知识,小伙伴们如果有不同见解欢迎交流。

最后也为大家准备一份软件测试学习资源:

囊括了:

  • 2021.9月最新版软件测试全套完整视频
  • 500套软件测试面试题+面试讲解视频
  • 10套典藏版 超高价值的软件测试试卷
  • 300套软件测试项目简历模板
  • 80套各类软测用例的设计模板合集

有需要的朋友可以关注我的公众号:程序员二黑,直接获取!

最后一句话送给大家:机会只垂青有准备的人,这是一个靠本事的社会。有时候,你之所以发展得不好,不是因为没有机遇,而是因为你没有准备好,导致机遇与你擦肩而过。如果你想要学习,什么时候开始都不晚,而不是瞻前顾后,你只要用尽全力,剩下的交给时间!

加油吧,测试人!路就在脚下,成功就在明天!

精彩推荐:

公司新来的阿里p8,看了我做的APP和接口测试,甩给了我这份文档…

腾讯二面:web测试问题被虐哭了,直到学长给了我这些知识点…

面试滴滴科技,被按在地上摩擦,鬼知道我经历了什么?

Guess you like

Origin blog.csdn.net/weixin_54928936/article/details/121366324