纠结 web 元素定位?Airtest 的图形识别学起来啦

引言

做 Web 自动自动化测试最关键的就是元素定位,一方面是元素定位可能找不到,另外一方面找到了又比较容易因为页面发生变化而依然导致元素找不到。

所以,如果有一个可以通过图像识别的工具来帮忙做元素定位,岂不轻松愉快?!今天我们要介绍的 Airtest 框架就是这样一个工具。

一、通过 selenium 窗口的按钮自动录制脚本

我们就一定要通过这个窗口的按钮启动浏览器,后续的所有操作都要基于这个启动的浏览器进行。

1.输入文本(text)

在这里插入图片描述
这个按钮就是浏览器输入文本的按钮。点击这个按钮后,再在启动后的浏览器里点击输入框,就会自动化生成如下代码:

在这里插入图片描述

不需要去定位找到这个输入内容的元素,只需要在 send_keys()括号里修改你真正想输入的内容即可。比如我打开百度,想要搜索“柠檬班”,就可以修改为:

driver.find_element_by_id(“kw”).send_keys(“柠檬班”)

2.点击操作(touch)

在这里插入图片描述
touch 按钮对应着鼠标的点击操作。点击这个按钮后,再在启动后的浏览器里选择要操作的按钮进行点击操作,就会自动生成如下代码:

在这里插入图片描述
也同样不需要自己定位,就可以自动生成想要的代码。

3.断言(assert)
在这里插入图片描述
这个按钮就叫做“断言”按钮,点击可以直接生成一个断言语句,来判断是否达到自己的预期结果。选中后点击页面的某个位置,就会为这个位置的元素生成如下的断言语句:
在这里插入图片描述
后面的“请填写测试点”可以编写自己的测试点,比如“判断这个元素出现”,就可以做出相对应的断言。

4.Airtest的图像识别功能

airtest 除了做元素定位的脚本录制之外,最主要的特色功能之一就是可以通过图像来识别元素。图像识别主要有两个按钮实现相对应的功能:
在这里插入图片描述
第一个就是这个 airtest 的图像识别点击功能。当某些元素不是很好定位的时候,airtest 提供了图像识别功能。点击这个按钮之后,移动鼠标选择你要点击的元素并截图,即可生成对应的代码:

这句代码就可以找到页面的这个图片,然后进行点击操作。

在这里插入图片描述
第二个就是 airtest 图像识别做断言。当你想要断言一个页面的元素是否存在时,就可以用这个图像识别做断言。点击这个按钮之后,移动鼠标选择你要点击的元素并截图,即可生成对应的代码:

后面引号里的内容同样可以自己编辑自己想要的测试点。

5.录制功能

录制功能按钮,点击后可以对整个页面任意的元素进行脚本的录制,相当于 touch 这个功能的集合。点击这个录制按钮,页面就会进入录制的状态:

比如我点击某个元素,打开新的标签页,就会自动生成如下代码:
在这里插入图片描述
二、Airtest 工具的一个实战案例

现在我们用这个工具来实现一个测试场景:

步骤 1:打开百度页面,搜索柠檬班
步骤 2:点击链接进入柠檬班官网
步骤 3:点击立即报名
首先我们直接通过录制按钮来录制脚本,得到以下脚本:
在这里插入图片描述
点击运行,会发现运行会报错,并且不能执行跑通这条测试用例:
在这里插入图片描述
跟我们所有可以录制脚本的工具一样,airtest 框架录制脚本因为受限于 airtest IDE 同样也有大的局限性,有时候会出现无法准确的定位到元素的位置的情况。要解决这个问题,我们可以有两种解决方案:

1.自己手写 Python 语句进行优化

这个就需要有用一定的 Python 自动化代码的基础,能够手动编写部分的代码。如果目前没有这个能力的同学,可以选择第二种方案。

2.用 airtest 的图形识别来定位元素

点击 driver.airtest_touch 这个按钮,找到对应的页面进行截图:
在这里插入图片描述
这样子的实现可以帮助我们去识别一些不太好定位的元素的。这也是这款 airtest 工具最厉害之处了。

不过这个工具的图像识别功能也不是万能的,如果图片不够清晰识别会出错;并且图片上的文字也有可能会识别出错。

所以这个图片识别功能只能作为一个辅助操作,一旦不能完全满足咱们的需求的时候,还是需要自己写脚本来替代和调试的。

最后,下面是我整理出来的一份软件测试工程师发展方向知识架构体系图。

希望大家能在这个成长过程中收益良多。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,古人说的好“不积跬步,无以至千里。”等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。

由于CSDN上传图片大小有限,有需要的朋友可以关注我的公众号:程序员二黑,回复1,即可获取原图。

下面是一份配套的软件测试资源包:

上面是一些配套资源,对于软件测试的的朋友来说应该是最全面最完整的备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

关注我的微信公众号:程序员二黑,即可免费获取!

最困难的时候,也就是我们离成功不远的时候!如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们的群:785128166 大家一起讨论交流学习。

推荐阅读

高薪程序员也躲不过35岁这一关…当能力与年龄脱节,我们该如何自救?

清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+

字节跳动软件测试岗,前两面过了,第三面HR天坑!竟然跟我说……

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员二黑

V:testerhei

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值