android - Appium+Android+webdriverio,如何点击列表元素
问题描述
我开始使用 Appium 在 Android 应用程序上运行 UI 测试(一旦我让它在 Android 上运行,可能还有 iOS)
我正在尝试使用nodeJS
and运行测试webdriverio
。
问题是,我似乎无法单击列表的元素(列表是动态创建的,因此元素都具有相同的 id)
这是节点代码。当我运行它时,appium 会正确启动一个模拟器并打开我的应用程序:
const wdio = require("webdriverio");
const opts = {
port: 4723,
desiredCapabilities: {
platformName: "Android",
platformVersion: "8.0",
deviceName: "Android Emulator",
app: "/path/to/application.apk",
appWaitActivity: "com.package.SomeActivity",
automationName: "UiAutomator2",
avd: "Nexus_5X_API_26"
}
};
const client = wdio.remote(opts);
client
.init()
.elements('id:theIdOfTheList') // This retrieves a list of 4 elements
.element()[3] // This gives a NoSuchElementError
.end();
我应该用什么代替.element()[3]
来完成这项工作(或者我应该用完全不同的方式来做这件事吗?)
我在 appium 中看到检索了列表的 4 个元素:
得到状态为 200 的响应:{"sessionId":"1c21baa1-60ec-4e5f-b51f-f738698660ad","status":0,"value":[{"ELEMENT":"53d31f1f-af25-4621-85cd-b2f881a5c770" },{"元素":"4c3909ab-6f65-426a-b831-9a7d5e069ba8"},{"元素":"e0fd1f12-0193-48ea-a168-4d45f63d27b3"},{"元素":"87b7abda-3738-4411- a544-572243cd7502"}]}
解决方案
我对 Node.js 不熟悉,但从外观上看,您并没有在任何地方存储该元素数组,并且您随后的 element() 调用只是在寻找另一个不相关的元素。由于您没有为其提供搜索参数,因此它什么也找不到。
请原谅我对您的语言的无知,但类似以下内容应该可以满足您的需求:
.elements('id:theIdOfTheList')[3]
推荐阅读
- firebase - Firebase auth CDN 未导出模块
- python - notebook.add() 返回错误的窗口路径名
- sql - 在 SQL 中过滤日期时出现奇怪的查询结果
- python - pyttsx3 模块没有给出任何输出
- android - 运行 Oreo 的 Android 手机,我想使用外接麦克风和手机扬声器接听电话,如何?
- javascript - 如何在反应js中删除字符串的第一个和最后一个引号
- flutter - Flutter中TextField中的多种文本样式
- c++ - 使用基于字符串的类型创建多态 C++ 对象的最佳方法?
- reactjs - React Typescript 尝试更改数组对象的状态导致错误
- html - 为什么 align-self 在 CSS 中不能作为 text-align 工作?