如何使用 appium 为 ui 选择器正确安装 test-ai-classifier 插件?

2024-04-23

遇到的问题是在ubuntu 20.04上。

按照指示进行操作https://github.com/testdotai/appium-classifier-plugin https://github.com/testdotai/appium-classifier-plugin

我确实在 appium 路径下安装了 test-ai-classifier,并使用 npm install -g test-ai-classifier 在全局范围内安装了 test-ai-classifier

我通过从命令行运行 appium-doctor 来确保 appium-doctor 不会给我任何错误。我转到 appium 路径并从命令行执行以下操作:

  1. node
  2. 需要('测试-ai-分类器');

总是遇到同样的错误:

Thrown:
Error: Cannot find module 'test-ai-classifier'
Require stack:

at Function.Module._resolveFilename (internal/modules/cjs/loader.js:797:15)
at Function.Module._load (internal/modules/cjs/loader.js:690:27)
at Module.require (internal/modules/cjs/loader.js:852:19)
at require (internal/modules/cjs/helpers.js:74:18) { code: 'MODULE_NOT_FOUND', requireStack: [ '' ]

你们有人遇到过这个问题吗?如果是,你是如何解决的?你用的是哪个环境?您是否在全局或 appium 路径中安装了 test-ai-classifier?


环境:

Windows 10
Tensorflow=1.1.0
python=2.7
global modules path = C:\Users\natha\AppData\Roaming\npm
appium = 1.19.1
node = 14.15.0
npm=6.14.9
test-ai-classifies=2.1.1

先决条件; 安装Android SDK并配置ANDROID_HOME 安装Java SDK并配置JAVA_HOME

Appium安装步骤:

npm install -g appium --drivers=xuitest,uiautomator2
npm install -g wd
appium -a 127.0.0.1 -p 4723
npm install -g appium-doctor
appium-doctor
(appium 1.19.1 is installed)

test-ai-classifier 安装 - 全局:

npm install -g [email protected] /cdn-cgi/l/email-protection
npm install --unsafe-perm --verbose -g node-sass
npm install -g node-gyp --unsafe-perm=true
//NODE_GYP_FORCE_PYTHON=python
//NODE_GYP_FORCE_PYTHON=python2
npm install -g [email protected] /cdn-cgi/l/email-protection --unsafe-perm=true --build-from-source --python=python2.7

test-ai-classifier 安装 - 在 appium 路径中:

where appium
C:\Users\natha\AppData\Roaming\npm\appium
cd C:\Users\natha\AppData\Roaming\npm\node_modules\appium\
npm install [email protected] /cdn-cgi/l/email-protection
npm install --unsafe-perm --verbose node-sass
npm install node-gyp --unsafe-perm=true
npm install @tensorflow/[email protected] /cdn-cgi/l/email-protection
npm install [email protected] /cdn-cgi/l/email-protection

全局节点模块配置:npm 在哪里安装包? https://stackoverflow.com/questions/5926672/where-does-npm-install-packages/27298237如果要更改全局模块路径, 使用 npm config edit 并将 prefix = /my/npm/global/modules/prefix 放入文件中

change from
; prefix=C:\Program Files\nodejs
to
; prefix=C:\Users\natha\AppData\Roaming\npm

如何验证 test-ai-classifier 安装?

[https://github.com/cloudgrey-io/appiumpro/issues/9][2]

If you go into the place where appium is installed, and run node, you'll get an interactive node.js prompt. From there, run require("test-ai-classifier");
If you get an error, it means the classifier module is not correctly installed and accessible to appium.
If not, it means everything is good, just make sure you restarted the appium server after installing it.

在IntelliJ中创建一个java类并添加以下代码:

package com.example.appium;

import io.appium.java_client.MobileBy;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.testng.annotations.Test;
import io.appium.java_client.android.AndroidDriver;


import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;

public class TestAppiumAI {


    private static AndroidDriver driver;

    @Test
    public void installTest() throws MalformedURLException, InterruptedException {

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName", "MotoG");
        capabilities.setCapability("platformVersion", "7.1.1");
        capabilities.setCapability("platformName","Android");
        capabilities.setCapability("udid", "ZH33L2Z6KL");
        capabilities.setCapability("automationName", "UiAutomator2");
        capabilities.setCapability("skipServerInstallation", "true");
        capabilities.setCapability("autoGrantPermissions", "true");
        capabilities.setCapability("noReset", "false");


        capabilities.setCapability("appPackage", "com.android.settings");
        capabilities.setCapability("appActivity","com.android.settings.Settings");

        HashMap<String, String> customFindModules = new HashMap<String, String>();
        customFindModules.put("ai", "test-ai-classifier");

        capabilities.setCapability("customFindModules", customFindModules);
        capabilities.setCapability("shouldUseCompactResponses", false);


        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

        //driver.findElement(MobileBy.custom("ai:search")).click();
        driver.findElement(MobileBy.custom("ai:bluetooth")).click();
        driver.quit();

    }
}

创建 TestNG.xml,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Regression" thread-count="2" parallel="tests" preserve-order="true" verbose="2">

    <test name="Real Device1">
        <classes>
            <class name="com.example.appium.TestAppiumAI"/>
        </classes>
    </test>
</suite>

从命令行启动 Appium 服务器:

appium -a 127.0.0.1 -p 4723

右键单击 TestNG.xml,然后执行。 观察设置应用程序下的蓝牙是否被选中。 请随意获取源代码/项目

[https://github.com/anbunathan/appium-examples/blob/master/Template1/src/test/java/com/example/appium/TestAppiumAI.java][2]

另外,我还添加了一个视频:https://youtu.be/CFDSejLJEQY https://youtu.be/CFDSejLJEQY

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 appium 为 ui 选择器正确安装 test-ai-classifier 插件? 的相关文章

随机推荐

  • 正则表达式中的顺序不重要吗?

    我正在查看此 stackoverflow 链接中提出的问题 奇数个 a 的正则表达式 https stackoverflow com questions 28902496 regular expression for odd number
  • ZMQ 模式经销商/路由器心跳

    我在客户端有一个经销商套接字 它连接到服务器端的路由器套接字 我经常看到心跳机制 服务器定期向客户端发送消息 以便客户端知道自己是否正确连接到服务器 以便客户端在一段时间内没有收到消息时可以重新连接 例如这里的偏执海盗模式 http zgu
  • 在 Aurelia 中,我可以绑定包含视图模型中的函数以供自定义元素调用吗?

    我有一个自定义元素 它将接受用户输入 并且在单击 保存 按钮时 我想将信息传递给父视图模型 以便我可以将其发送到服务器并移至下一部分 例如 我将简化这一点 my element js import customElement bindabl
  • 如何从另一个块访问块状态中的数据

    我正在使用 Bloc 模式开发 Flutter 应用程序 认证成功后 UserSate就有了User对象 在所有其他 Bloc 中 我需要访问 UserState 中的 User 对象 我尝试在其他 Bloc 的构造函数参数上获取 User
  • React-testing-library - 屏幕与渲染查询

    有两种使用查询的方法react testing library https testing library com docs react testing library intro 您可以使用返回的查询render https testin
  • 有人有关于 C 语言设计和错误跟踪/控制系统的好指南吗?

    我是 C 开发的软件工程方面的新手 有没有人有关于如何为 C 项目 尤其是嵌入式 设计错误跟踪或错误控制系统的良好指南 谈论 C 库的错误跟踪也会有帮助 根据我的经验 这里的策略分为几个阵营 全局变量ala的使用errno http www
  • 在 pandas 系列上成对应用函数

    我有一个 pandas 系列 其元素构成 freezesets data 0 frozenset apple banana 1 frozenset apple orange 2 frozenset banana 3 frozenset ku
  • 无法通过 Graph API 获取我所属的 Office 365 组

    尝试获取用户所属的所有 Office 365 组 我已在 Azure 上注册了一个 本机客户端应用程序 并仅选择了一项权限 Microsoft Graph 范围下的 读取所有组 问题 其他租户的用户收到 由于缺乏权限 呼叫主体无法同意 错误
  • 根据 .txt 文件中存储的列表复制文件

    我有一个源文件夹 目标文件夹 我想要从源文件夹复制到目标文件夹的文件列表 该文件夹已保存到 txt 文件 listtocopy txt 如下 不确定它是否重要 但它们是 Anabat ZC 文件 S5281925 35 S5282317 2
  • 使用 Python 的 Windows 桌面 GUI 自动化 - 睡眠与紧密循环

    我正在使用 Python 的 PyAutoGUI 库来自动化 GUI 在当前窗口上完成数据输入后 我正在自动化的应用程序会打开一个新窗口 一切都由 python 自动化处理 当前窗口中的数据输入以及打开窗口所需的单击 在当前窗口中执行单击时
  • 如何使用模板模板参数为没有该方法所需的公共接口的 STL 容器实现通用方法

    问题陈述 为教育性的目的 实现适用于STL容器的方法printContainervector stack queue and deque 我提出了一个解决方案 但由于代码量过多 我不喜欢它 我为解决问题所做的事情 1 设计通用函数 期望容器
  • ReadFile() 可能有超时吗?

    while GetExitCodeProcess processInfo hProcess exitCode exitCode STILL ACTIVE ReadFile defaultSTDIN chBuf 1 dwRead 0 Writ
  • 你能让贴纸应用程序有声音吗?

    当你制作一个 iMessage 贴纸应用程序时 是否可以让它在点击时发出声音 示例 您向某人发送了一张贴纸 他们点击它并发出声音 谢谢 是的 您可以使用 iMessage 根据苹果文档here https developer apple c
  • Firebase 与 Swift

    我试图移植firechat ios项目转移到 Swift 并遇到了一些问题 我想这可能只是要求 firebase 人员对其 SDK 进行一些更新 但我想我还是会问 添加 Firebase 及其依赖项后 我无法成功构建我的项目 我收到警告 i
  • C 没那么难: void ( *( *f[] ) () ) ()

    我今天刚看到一张照片 希望得到解释 所以这是图片 抄写 C 并不那么难 void f 定义f作为未指定大小的数组 包含指向函数的指针 该函数返回指向返回的函数的指针void 我发现这令人困惑 并想知道这样的代码是否实用 我用谷歌搜索了这张照
  • 如何按字符串的某些部分排序?

    假设我有列 如何按字符串的某些部分排序codes它具有以下格式的值 LLL NNN 例如 dGd 542 我如何按数字字符串的第二部分进行排序 你应该能够提取子串 http dev mysql com doc refman 5 0 en s
  • Excel VBA:我可以使用公式命名范围吗?

    我的目标是将我刚刚粘贴的范围命名为一个独特的名称 以便我将来可以找到它 复制和粘贴的范围来自下拉菜单 因此必须修改 Selection Name Formula AddSection SUBSTITUTE Add Section D3 如果
  • 高效的ActiveRecord has_and_belongs_to_many查询

    我有具有 has and belongs to many 关系的页面和段落模型 给定paragraph id 我想获取所有匹配的页面 例如 pages Paragraph find paragraph id pages all 但是 这需要
  • 警告 MSB3276 - 发现同一依赖程序集的不同版本之间存在冲突

    我的解决方案由多个项目组成并且编译良好 我正在使用 nuget 我使用的包之一是 log4net 2 0 0 我最近将包更新为 log4net 2 0 3 并确保在属于该解决方案的每个项目中 参考都已更新 不幸的是 我在编译过程中仍然收到以
  • 如何使用 appium 为 ui 选择器正确安装 test-ai-classifier 插件?

    遇到的问题是在ubuntu 20 04上 按照指示进行操作https github com testdotai appium classifier plugin https github com testdotai appium class