我花了两周时间,为了体验appium AI定位元素

当我们在写自动化测试脚本的时候,传统情况下一定要知道元素的属性,如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/sdkPATH=${PATH}:${ANDROID_HOME}/platform-toolsPATH=${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地址:https://github.com/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

在安装过程发现有依赖google  TensorFlow 的库。

使用

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秒吧!

如果,你想知道 appium-classifier-plugin支持那些类型的元素定位,看这里:https://github.com/testdotai/appium-classifier-plugin/blob/master/lib/labels.js

目前支持100多种类型。

(0)

相关推荐

  • Appium原理与安装 | 白月黑羽教Python

    本教程讲解如何使用Appium进行手机应用的自动化. 学习本课程前,强烈推荐先学习 Selenium Web 自动化课程 Appium 用途和特点 点击这里,边看视频讲解,边学习以下内容 Appium ...

  • Appium自动化(图文教程).pdf

    一直以来小编忙于写selenium的自动化教程,,appium的教程只出了前面的基础入门系列.最近小编整理了下appium的入门教程,并整理成pdf版,方便小伙伴快速入门,便于查看. 目录 第1章环境 ...

  • Appium+python自动化9-SDK Manager

    前言 SDK Manager到有哪些东西是必须安装的呢? 一.SDK Manager 1.双击打开SDK Manager界面 2.Tools里面前三个是必须下载的 --Android SDK Tool ...

  • TestOps自动化测试之Appium(Java)专项入门

    课程目标: 面对DevOps的热潮来临,TestOps作为测试运维也逐步萌芽.作为测试运维中非常重要的UI自动化测试,如何有效进行,配合持续集成&持续发布,构建自动化体系是很多TestOps急 ...

  • Python Appium 自动化操作微信入门看这一篇就够了

    Python小二推荐搜索关键词列表:Python爬虫游戏自动化数据分析 简介 Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.P ...

  • Python教你迅速成为蚂蚁森林排行榜第一名

    最近在家远程工作,结果作息更混乱了 ,早上起不来,导致我蚂蚁森林能量天天被偷,严重影响我沙漠造树"大业" .于是我决定用python写个自动偷能量的程序,每天早上定时偷取好友能量, ...

  • 花了两周时间,整理了常用K线组合应用大全...

    花了两周时间,整理了常用K线组合应用大全,详细介绍了K线组合的形成,以及它的操作应用. 很多朋友对于K线形态知其然不知其所以然,而K线组合是短线操作最常用的技术之一,有些朋友在应用这些技术的时候,只知 ...

  • 股票被套怎么办?我花了两天时间整理出来了...

    股票被套怎么办?我花了两天时间整理出来了T+0的操作方法,简单实用,还可以通过这个方法来降低成本,今天分享给散户朋友们,喜欢的收藏好. 之前遇到朋友买了股票套住了,聊天聊到解套这个问题,我就问他:&q ...

  • 汉朝灭匈奴花了两百年时间,为何唐朝建国初期就能灭突厥?

    匈奴和突厥都曾经是中国农耕王朝面对的游牧强国,但是最终都被我们击败了.但是,击败两者的过程却大有不同.汉朝和匈奴的斗争,从汉朝初期就开始,一直到东汉前期才击垮了北匈奴汗国.唐朝建立之后,在30年内就将 ...

  • 花了两天时间把A 股4000多家公司都研...

    花了两天时间把A 股4000多家公司都研判了一番,终于理出现在市场上各行各业的龙头名单,含金量极高,不管你是新股民还是老股民,都一定要对龙头企业有深入了解,这样下次浪潮袭来,你才能快人一步!这将是你最 ...

  • 最强SAT技巧和考试策略:两周时间,帮你突破SAT高分!

    [名师公开课预告] 了解更多SAT知识和备考技巧, 现可报名免费参与 SAT阅读线上公开课  (课程价值399/节) - 详情参见文末- SAT是由美国大学理事会(College Board)举办的, ...

  • 长文花了两天时间整理了STM32中的一些C语言知识点

    https://m.toutiao.com/is/euo2NE7/ 前言 一位初学单片机的小伙伴让我推荐C语言书籍,因为C语言基础比较差,想把C语言重新学一遍,再去学单片机,我以前刚学单片机的时候也有 ...

  • 万亿股民赶紧来抄作业,这是我花了两天时间...

    万亿股民赶紧来抄作业,这是我花了两天时间,才整理出来的全网最齐的买股秘诀,也是经过我的千万次测试,成功率在百分之90以上,价值千金,值得收藏,不想亏钱的一定要多看几遍. 我炒股这么多年来,什么样的情况 ...

  • 炒股十六年,花了两天时间,为千万股友总结...

    炒股十六年,花了两天时间,为千万股友总结了一份技术干货,速来抄作业咯!这套干货,我经过成千上万次的使用,成功率颇高,非常具有价值,建议先点赞收藏,再细细品味,想赚钱,就多看几遍. 这套方法就是K线组合 ...

  • Linux的这个通配符,花了两天时间,终于搞明白了

    最近老被同学问到关于通配符操作的问题,本来觉得是一个很简单的问题,结果它和其它命令一结合,就很难给出合理的理解 .进行了很多实验,总是难以有个满意的答案 .于是决定要好好研究一番 ,终于在多次的测试和 ...