我花了几个小时尝试使用appium javascript客户端按ID搜索元素,但是没有运气。在堆栈溢出中发现了其他一些文章,指出它可以工作,但对我来说不起作用。看来我可以使用类似的东西:
var buttonEl = await driver.findElement(By.id("resourceid"));
但是我总是收到一条错误消息:
InvalidSelectorError: Locator Strategy 'css selector' is not supported for this session
这是源代码:
"use strict";
var wd = require("selenium-webdriver"),
By = wd.By,
until = wd.until;
// Setting Desired Capabilities.
var desiredCaps = {
platformName: "Android",
deviceName: "a3ae1c63",
appPackage: "com.mypackage",
appActivity: ".Main",
browserName: '',
noReset: true,
newCommandTimeout: 1000000
};
async function test() {
//Initiating the Driver
let driver = await new wd.Builder().usingServer("http://localhost:4723/wd/hub").withCapabilities(desiredCaps).build();
var buttonEl = await driver.findElement(By.id("id/contact_selector"));
buttonEl.click();
}
test();
我现在很困惑。我了解似乎无法在android会话中使用id的find元素,但另一方面,我已经了解到人们成功使用了find元素。
任何帮助将不胜感激。
答案 0 :(得分:0)
我认为您正在将硒参数用于定位器策略。请在http://appium.io/docs/en/commands/element/find-elements/index.html#selector-strategies此处阅读appium选择器的文档。
尝试
var buttonEl = await driver.element("id", "resource-id");
答案 1 :(得分:0)
最后,我能够解决我的问题。主要问题是我没有使用所需的Web驱动程序。我改用webdriverio,现在一切正常。
更好的起点是检查appium github中的示例。他们为每个驾驶员提供一些示例。代码有点过时了。