当我们在写自动化测试脚本的时候,传统情况下一定要知道元素的属性,如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的过程中需要设置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 插件

使用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 sleep

CAPS = {

"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秒。

目前支持100多种类型。

appium java 虫师_如何在Appium中使用AI定位相关推荐

  1. cmd中加载java源文件_如何在cmd中编译和运行java源文件

    如何在cmd中编译和运行java源文件 首先写一个名为HelloWorld.java的java源文件,存储在如C:/java/src的地址,我们再假设待会要存储的位置是C:/java/bin,则我们做 ...

  2. appium java 测试用例_如何在C#中使用Appium编写测试用例?

    1)创建一个类库项目并创建一个新类,例如"Class1" . 添加上面链接中提供的包 . 请尝试以下代码 using System; using System.Collection ...

  3. appium java 虫师_利用 IPython 来学习 Appium

    Appium简介 Appium是目前非常流行的移动端自动化测试工具,它是一个开源.跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台.同时 ...

  4. amd cpu不能在cmd环境下运行java代码_如何在Windows10中配置java的JDK环境

    今天给大家分享一下如何配置java的JDK环境.操作步骤如下: 1.下载好 jdk 的安装文件,我下载的是 jdk-10.0.1_windows-x64_bin.exe 这个版本的安装文件: 2.使用 ...

  5. netbeans java项目_如何在NetBeans中组合两个Java项目

    我使用NetBeans为我的Java类创建了两个独立的项目 . 最终,我想把两者结合起来 . 我希望他们俩都在同一个输出窗口上播放 . 一个项目是使用JavaFX创建的,一个是Java应用程序 . J ...

  6. textpad设置Java版本_如何在textpad中保存设置以显示行号?

    作为Pramod对在 Configure > Preferences > General > Allow multiple instances to run 选中此框的用户的回答,您 ...

  7. lstm模型java实现_如何在Keras中构建LSTM分类器模型

    你想做的是: from keras.models import Sequential from keras.layers import LSTM, Dense from keras.optimizer ...

  8. figma设计_如何在Figma中构建设计入门套件(第1部分)

    figma设计 Figma教程 (Figma Tutorial) Do you like staring at a blank canvas every time you start a new pr ...

  9. vba中取小数点后两位数_如何在Excel中提取小数点后面的数字?

    Excel中,如果某个单元格中包含一个带小数,要用公式提取该数值小数点后面的数字,例如A1单元格中包含一个数值"59178.68",在B1单元格中输入下面的公式: =RIGHT(A ...

最新文章

  1. 【灌水】一些奇妙的图片(持续更新)
  2. 最新 Windows 7 7100安装
  3. php 检测密码,php如何检测账号密码是否匹配
  4. java 判断exception类型_Checked Exception | Java语言设计者的失误?
  5. 推荐系统遇到曝光偏差怎么办?用对比学习!
  6. java多线程之线程的安全性(一)
  7. 《CCNA学习指南:数据中心(640-911)》——1.6 考试要点
  8. 使用hexo+GitHub搭建步骤
  9. atr netty长连接_基于Netty实现Web容器Netty版Tomcat(三)
  10. 剑指offer——8.二叉树的下一个节点
  11. 什么是字节 什么是数据包
  12. linux系统移植篇(一)—— linux系统组成
  13. 下载firebug网站
  14. linux系统nohob安装,Linux启动详解1
  15. 自动量化炒股软件是什么?
  16. XUI Android原生的UI框架的配置指南
  17. vscode好用插件——磨刀不误砍柴工!
  18. c语言数独思路介绍,【数独运算器】,关于数独的解题思路,已经改进。
  19. PPT调整同一行字符间距的三种常用方法
  20. python 安装环境时出现报错:CondaVerificationError: The package for tk located at /home/anaconda3/pkgs/t

热门文章

  1. 别用XShell了,这款SSH工具绝对惊艳,还支持网页版...
  2. 市场营销学1——入门
  3. 边缘城市的竞争对策——效用型城市
  4. input中鼠标点击清楚按钮之后的聚焦回input的方法
  5. 【收藏】最靠谱的笔记本电脑购买指南,让你少走弯路!
  6. “天涯棋客”回沪教棋
  7. 广州市天河区2021-2022学年九年级第一学期期末考试英语试题
  8. 【诗经】之《秦风·无衣》
  9. python鱼眼图像识别_使用OpenCV校准鱼眼镜头的方法
  10. unity 照片墙 流动 排斥 引力