【Airtest】 UI 自动化

一、环境配置

项目名称:Yavin
锁定python3.7.x和opencv-contrib-python==3.4.2.17,不然各种报错
参考airtest官网https://airtest.doc.io.netease.com/
虚拟环境配置
安装所需要的依赖包

二、框架使用方式

1.目录结构介绍
2.config文件config.yaml文件介绍
  • 元素变量名称命名规则:
    • 元素是取id的,名字必须是ID_开头
    • 首页搜索🔍图标的对应的resourceid名字是"com.cmcm.live:id/home_search_img"
    • 新框架的书写方式就是变量名+(去掉包名)元素名字:ID_HOME_SEARCH_IMG: ':id/home_search_img'
  • 执行分包用例的时候,修改config.yaml文件中的包名为对应分包的包名
3.page文件下介绍

类里面写对应页面的用例步骤方法,以及做相关断言判断。关键步骤进行截图和断言,可以在报告中展示,方便查看结果

4.公用执行case放置位置

公共case会对一些常用的场景进行封装,供大家调用,eg:登录,开播,关闭直播,进入直播间等。由专门的同学进行维护和编写

5.具体case编写

三、用例执行

1.python 命令直接调试某条用例
2.airtest命令执行整个用例和展示对应的用例执行报告
  • 生成报告需要两步:
    • 先执行用例命令python3 -m airtest run testcase/goto_single_live.air --log log/
    • 在生成报告airtest report testcase/goto_single_live.air --log_root log/ --export ~/Downloads/ --plugin poco.utils.airtest.report

四、框架常用方法集合

查找元素使用self.page_ele_loc()方法
  1. 举例点击首页搜索🔍进入搜索页面
  2. self.page_ele_loc("ID_HOME_SEARCH_IMG")
  3. 获取配置文件中自定义元素名字的值,通常和self.find_click()结合使用
元素的点击操作
  1. 举例,还是已点击搜索图标
    1. 原来airtest中的点击方式self.poco.click(), 具体用法:self.poco.click("元素对应的id名字")self.poco.click("com.cmcm.live:id/home_search_img"

    2. 现在新框架的点击方式self.find_click(self.page_ele_loc(元素id对应的配置文件中的名称))self.find_click(self.page_ele_loc("ID_HOME_SEARCH_IMG"))

    3. 优点:如果某个页面元素id改变只改配置文件一个地方就可以,其他用例中不用改变

断言
  1. 尽量用airtest中的断言方式,这样在报告中可以展示的更明确
  2. 导入airtest中的断言from airtest.core.api import sleep, assert_equal, assert_not_equal
  3. 举例:
    1. assert_equal一般就是判断某个元素是否出现来验证执行case是否达到预期的页面,使用方式assert_equal(self.home_page.up_live_icon_is_exists(), True, "home页开播按钮不存在")
    2. assert_not_equal一般是来验证找不到这个页面,即验证某个页面消失,但是消失之后不确定会回到哪个页面,使用方法同assert_equal

五、采坑大集

1、跨类名调用元素

调用方式: Config.get_yaml().get("配置文件中的元素所在类别的名称").get(对应元素的名字)

举例:

s = Config.get_yaml().get("SystemPermission").get("NAME_PERMISSION_ALLOW_BUTTON")

self.poco(s).click()

self.find_click(self.page_ele_loc(s)) # 这种方式会失败,pocoservice会crash

2、执行case时adb 权限

错误信息提示:

解决方式:

chmod +x /usr/lib/python3.7/site-packages/airtest/core/android/static/adb/mac/adb (路径和上面提示错误的adb路径保持一致)

3、 adb server version (40) doesn't match this client (41); killing...

➜ bin adb devices adb server version (40) doesn't match this client (41); killing...

* daemon started successfully

List of devices attached

a897fc81 device

解决方案:https://blog.csdn.net/ckckjsws/article/details/123736460

cp /usr/local/bin/adb /Applications/AirtestIDE.app/Contents/MacOS/airtest/core/android/static/adb/mac/adb

4、poco不断重启

https://www.cnblogs.com/AirtestProject/p/15355658.html

相关推荐
niuniu_66615 小时前
Selenium 性能测试指南
selenium·测试工具·单元测试·测试·安全性测试
莓事哒15 小时前
selenium和pytessarct提取古诗文网的验证码(python爬虫)
爬虫·python·selenium·测试工具·pycharm
软件测试曦曦18 小时前
如何使用Python自动化测试工具Selenium进行网页自动化?
自动化测试·软件测试·python·功能测试·测试工具·程序人生·自动化
互联网杂货铺20 小时前
黑盒测试、白盒测试、集成测试和系统测试的区别与联系
自动化测试·软件测试·python·功能测试·测试工具·单元测试·集成测试
Feng.Lee1 天前
聊一聊缓存如何进行测试
功能测试·测试工具·缓存
爱学测试的雨果1 天前
Postman —— postman实现参数化
软件测试·功能测试·测试工具·lua·postman
互联网杂货铺1 天前
如何用Postman实现自动化测试?
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
niuniu_6662 天前
安全性测试(Security Testing)
测试工具·单元测试·appium·测试·安全性测试
薄荷你玩_2 天前
简单粗暴,用浏览器调试端口绕过Selenium/Playwright/Puppeteer检测
selenium·测试工具
程序员三藏2 天前
Python+Jenkins+Allure Report接口自动化测试持续集成
自动化测试·软件测试·python·测试工具·ci/cd·jenkins·测试用例