Airtest基本使用

前段时间在博客中见到airtest的介绍,自己并实践了一番,用起来的确很方便,所以今天就来分享下。

Airtest简介

Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。Airtest的框架是网易团队自己开发的一个图像识别框架,这个框架的祖宗就是一种新颖的图形脚本语言Sikuli。Sikuli这个框架的原理是这样的,计算机用户不需要一行行的去写代码,而是用屏幕截屏的方式,用截出来的图形摆列组合成神器的程序,这是Airtest的一部分。另外,Airtest也基于poco这个U控件搜索框架,这个框架也是网易自家的跨平台U测试框架,原理类似于appium,通过控件的名称,id之类的来定位目标控件,然后调用函数方法,例如click(),swip()之类的方法来对目标控件进行点击或者是操作。正如他们所说,基于图形化识别的Airtest Project解决方案,十分有效地降低了自动化测试的门槛,真正使自动化测试带来测试效率的提升。Google表示Airtest 是安卓游戏最强大、最全面的自动测试方案之一。

Airtest用途

游戏测试、APP测试、WEB测试、WIN应用测试等

Airtest的使用,官方文档有详细说明,详见:

http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/index.html

Airtest下载地址,如下:

http://airtest.netease.com/download.html?download=AirtestIDE_2019-01-15_py3_win64.zip

Airtest API文档,如下:

https://airtest.readthedocs.io/en/latest/

github上源码,如下:

https://github.com/AirtestProject

将下载下来的压缩包,解压后,即可使用,不需要安装,前提是要有python环境,python环境就不需要多余介绍了。

Airtest Web自动化测试

AirTest Web自动化测试基于Selenium和python语言,通过调用Chrome浏览器Devtools Protocol协议,将用户操作解析成python脚本。

 Selenium工作原理示意

Airtest 目前集成了chrome浏览器基于selenium进行web自动化测试,通过录制得到的python脚本,调用chromedriver驱动浏览器执行指定动作。

设置Chrome启动路径

基于上述原理,在使用Airtest进行Chrome自动化测试脚本录制与执行前,需要指定chrome浏览器启动路径,并使Airtest内置的chromedriver与浏览器版本配套。

Airtest的最新版自带较新的稳定版本chromedriver.exe(目前为2.37版本),需要匹配对应的chrome浏览器。

通过Airtest设置菜单,在selenium选项中,设置chrome浏览器的安装路径。

如果出现报错,可能是浏览器驱动版本不一致导致的,需要更换成对应的版本驱动即可,驱动地址如下:

http://chromedriver.storage.googleapis.com/index.html

### Airtest 中 `if` 语句的使用方法 在 Airtest 脚本中,`if` 条件语句与其他编程语言中的条件判断逻辑相似。由于 Airtest 是基于 Python 的自动化测试框架,因此可以直接利用 Python 提供的标准语法来实现复杂的控制流结构。 以下是关于如何在 Airtest 脚本中使用 `if` 语句的具体说明: #### 1. 判断某个元素是否存在 可以通过 POCO 或者 Airtest 自带的图像识别功能检测目标对象的存在状态,并据此执行不同的操作。 ```python from airtest.core.api import exists from airtest.core.api import Template template_image = Template(r"path_to_your_image.png") if exists(template_image): print("Image found!") else: print("Image not found.") ``` 上述代码片段展示了如何通过模板匹配的方式查找屏幕上的特定图片并作出相应处理[^1]。 #### 2. 结合断言函数进行错误捕获 当需要验证某些条件是否满足时,可以引入自定义封装好的断言工具辅助完成更灵活的任务管理。 ```python def poco_assert_method(func, *args, case_msg=None): ''' :param func: 断言方法 :param args: 断言方法里需要的参数 :return: 返回断言结果 ''' try: if case_msg: return func(*args, msg=case_msg) else: return func(*args) except Exception as e: print(f'{func.__name__} ERROR:', e) return False result = poco_assert_method(some_poco_function, arg1, arg2, case_msg="Check Element Visibility") if result: print("Assertion passed successfully.") else: print("Failed to pass assertion check.") ``` 这里演示了一个典型的场景——调用外部定义的方法来进行内部逻辑分支的选择过程[^4]。 #### 3. 导入 `.air` 文件扩展模块化设计思路 为了提高代码复用率以及维护便利性,在实际项目开发过程中往往倾向于把那些频繁使用的公用组件单独保存成独立文件形式以便随时调取应用。 假设我们已经创建好了一套名为 `common_operations.air` 的公共资源库,则可以在新的测试案例当中轻松加载它们作为补充支持部分如下所示: ```python from airtest.core.api import using using("common_operations.air") import common_operations condition_value = True if condition_value: common_operations.perform_action_a() else: common_operations.execute_alternative_b() ``` 此段落介绍了有关于如何有效地组织大型项目的技巧之一就是合理运用子程序的概念[^2]。 --- ### 总结 综上所述,无论是在简单的存在性检验还是复杂的应用层面上面,都可以看到 Airtest 对标准 python 控制结构的支持程度非常高。只要掌握了基本概念之后就可以随心所欲地构建属于自己的强大而高效的 UI 测试解决方案啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值