当前位置: 首页 > news >正文

如何在Appium中使用AI定位

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)【持续更新最新版】-CSDN博客

当我们在写自动化测试脚本的时候,传统情况下一定要知道元素的属性,如id、name、class等。那么通过AI的方式定位元素可能就不需要知道元素的属性,评价人对元素的判断来定位,比如,看到一个搜索框,直接使用ai:search来定位, 或者我想定位一个关闭按钮,之直接使用 ai:close,我们并不需要知道这搜索框和关闭按钮的属性。

appium 通过插件的方式可以支持AI定位。为体验一个这种定位方式我花了两周时间。

### 系统要求

首先,需要一些系统依赖项来处理图像。

  • macOS
brew install pkg-config cairo pango libpng jpeg giflib
  • Linux
sudo apt-get install pkg-config libcairo2-dev libpango* libpng-dev libjpeg-dev giflib*
  • Windows

暂不支持。

如果遇到问题,您可能必须单独安装每个包。

我一开始在Windows试了半天不成功,因为我有现成的appium环境,后来发现压根不支持,于是,换成了macOS, 所以后面的操作在macOS下完成,当然,如果你有Linux环境,我觉得也是OK的。

### 安装 Android Studio

因为我要操作的移动设备是Android, 所以需要安装Android SDK, 那么Android Studio集成了Android SDK。

下载android studio: https://developer.android.com/studio

在安装Android Studio的过程中需要设置android SDK的路径,我的路径为:

/Users/tech/Library/Android/sdk

然后,需要配置环境变量:sudo vi ~/.bash_profile

ANDROID_HOME=/Users/tech/Library/Android/sdk
PATH=${PATH}:${ANDROID_HOME}/platform-tools
PATH=${PATH}:${ANDROID_HOME}/tools

最后,使配置生效:source ~/.bash_profile


### 安装appium

1、不要使用appium-desktop, 通过命令方式安装appium。

> brew install node      # get node.js
> npm install -g appium  # get appium

2、安装appium-doctor

> npm install appium-doctor

3、通过appium-doctor命令检查环境:

> appium-doctor
info AppiumDoctor Appium Doctor v.1.11.0
info AppiumDoctor ### Diagnostic for necessary dependencies starting ###
info AppiumDoctor  ✔ The Node.js binary was found at: /usr/local/bin/node
info AppiumDoctor  ✔ Node version is 10.15.1
WARN AppiumDoctor  ✖ Xcode is NOT installed!
info AppiumDoctor  ✔ Xcode Command Line Tools are installed in: /Library/Developer/CommandLineTools
info AppiumDoctor  ✔ DevToolsSecurity is enabled.
info AppiumDoctor  ✔ The Authorization DB is set up properly.
WARN AppiumDoctor  ✖ Carthage was NOT found!
info AppiumDoctor  ✔ HOME is set to: /Users/tech
info AppiumDoctor  ✔ ANDROID_HOME is set to: /Users/tech/Library/Android/sdk
info AppiumDoctor  ✔ JAVA_HOME is set to: /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
info AppiumDoctor  ✔ adb exists at: /Users/tech/Library/Android/sdk/platform-tools/adb
info AppiumDoctor  ✔ android exists at: /Users/tech/Library/Android/sdk/tools/android
info AppiumDoctor  ✔ emulator exists at: /Users/tech/Library/Android/sdk/tools/emulator
info AppiumDoctor  ✔ Bin directory of $JAVA_HOME is set
...


### appium AI 插件

GtiHub地址:GitHub - testdotai/appium-classifier-plugin

使用Appium 1.9.2-beta版以上。另外,一定要使用 XCUITest 驱动程序(用于iOS)或UiAutomator2或Espresso驱动程序(用于Android)。较老的iOS和Android驱动程序不支持所需的Appium在任何情况下,都不推荐使用。


### Classifier 设置

要使这个插件对Appium可用,只需转到主appium项目的安装目录下面,并运行:

> cd /usr/local/lib/node_modules/appium
> npm install test-ai-classifier

将这个插件安装到Appium的依赖树中,并使其可用。

我在安装这个插件的时候各种报错,你可以试试下面的命令。

> sudo npm --registry http://registry.npm.taobao.org install test-ai-classifier  --unsafe-perm


### 使用

1、通过命令的方式启动appium

> appium
[Appium] Welcome to Appium v1.14.0
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
...

2、编写自动化测试脚本:

from appium import webdriver
from time import sleepCAPS = {"deviceName": " MEIZU_E3","automationName": "UiAutomator2","platformName": "Android","platformVersion": "7.1.1","appPackage": " com.meizu.flyme.flymebbs","appActivity": ".ui.LoadingActivity","noReset": True,"unicodeKeyboard": True,"resetKeyboard": True,"customFindModules": {"ai": "test-ai-classifier"},"testaiConfidenceThreshold": 0.1,"shouldUseCompactResponses": False,
}driver = webdriver.Remote('http://localhost:4723/wd/hub', CAPS)
sleep(3)# 用 AI 定位到搜索框
driver.find_element_by_custom("ai:search").click()
sleep(5)
driver.find_element_by_id("com.meizu.flyme.flymebbs:id/kf").send_keys("flyme")driver.find_element_by_id("com.meizu.flyme.flymebbs:id/o7").click()
result = driver.find_elements_by_id("com.meizu.flyme.flymebbs:id/a2a")[0].text
print(result)driver.quit()
  • automationName
    如果要测试的是Android的话,必须要指为UiAutomator2或 Espresso

  • customFindModules
    必须要指定为 {"ai": "test-ai-classifier"}

  • testaiConfidenceThreshold
    此功能决定了考虑元素的最低置信度。默认情况下,值为0.2。参数介于0和1之间的数字,其中1表示信心必须完美,0表示根本不需要信任。

  • shouldUseCompactResponses
    这指示appium在找到元素时包含有关元素的额外信息,这大大加快了获取此插件的输入过程。

最终,我要体验的代码就是这一行:

driver.find_element_by_custom("ai:search").click()

通过ai来定位搜索框。

确实定位到了,可是定位的速度特别慢,大概需要10~20秒。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • yarn安装包时报错error Error: certificate has expired
  • IDEA2023版本整合SpringBoot热部署
  • GEE训练——如何实现单景影像边界的提取以sentinel和Landsat数据为例(栅格转矢量)
  • github加速神器!解决github巨慢的问题,并且能够加速下载!另外推荐GitKraken -- 超好用的 Git 可视化工具
  • 数字孪生项目中实时数据驱动多节相连车厢沿轨道运行
  • SEO 的未来:GPT 和 AI 如何改变关键词研究
  • 蓝桥杯刷题计划-洛谷-持续更新
  • 价格才不是小米汽车的最大“杀器”
  • 阿里云对象存储OSS入门
  • JavaSE day14笔记
  • vscode添加gitee
  • 贪心算法相关题目
  • Stable Diffusion XL之使用Stable Diffusion XL训练自己的AI绘画模型
  • 运用开关量信号远程传输装置实现工厂智能化技改需要分几步走
  • vue基础——java程序员版(总集)
  • php的引用
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • android图片蒙层
  • axios 和 cookie 的那些事
  • HTML中设置input等文本框为不可操作
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript设计模式之工厂模式
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • nodejs:开发并发布一个nodejs包
  • Rancher-k8s加速安装文档
  • SpiderData 2019年2月25日 DApp数据排行榜
  • vuex 笔记整理
  • 微服务入门【系列视频课程】
  • 移动端高清、多屏适配方案
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​linux启动进程的方式
  • ## 基础知识
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • $.ajax()方法详解
  • $.proxy和$.extend
  • $nextTick的使用场景介绍
  • (09)Hive——CTE 公共表达式
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (LeetCode 49)Anagrams
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (六)Hibernate的二级缓存
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (四)js前端开发中设计模式之工厂方法模式
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)Unity3DUnity3D在android下调试
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .Net7 环境安装配置
  • .Net--CLS,CTS,CLI,BCL,FCL
  • .NET中使用Redis (二)
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!