如何通过资源ID获取元素?
How to get element by resource id?
我花了几个小时尝试使用 appium javascript 客户端通过 id 搜索元素,但没有成功。在 stack overflow 中发现了其他一些帖子,说明它有效,但对我不起作用。看来我可以使用类似的东西:
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 查找元素,但另一方面我已经读到有人成功使用它。
如有任何帮助,我们将不胜感激。
我认为您正在为定位器策略使用 selenium 参数。请在此处阅读 appium 选择器的文档 http://appium.io/docs/en/commands/element/find-elements/index.html#selector-strategies。
试试这个
var buttonEl = await driver.element("id", "resource-id");
我终于解决了我的问题。主要问题是我没有使用所需的网络 driver。我切换到 webdriverio,现在一切正常。
更好的起点是查看 appium github 中的示例。他们每个 driver 都有一些例子。不过代码有点过时了。
我花了几个小时尝试使用 appium javascript 客户端通过 id 搜索元素,但没有成功。在 stack overflow 中发现了其他一些帖子,说明它有效,但对我不起作用。看来我可以使用类似的东西:
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 查找元素,但另一方面我已经读到有人成功使用它。
如有任何帮助,我们将不胜感激。
我认为您正在为定位器策略使用 selenium 参数。请在此处阅读 appium 选择器的文档 http://appium.io/docs/en/commands/element/find-elements/index.html#selector-strategies。
试试这个
var buttonEl = await driver.element("id", "resource-id");
我终于解决了我的问题。主要问题是我没有使用所需的网络 driver。我切换到 webdriverio,现在一切正常。
更好的起点是查看 appium github 中的示例。他们每个 driver 都有一些例子。不过代码有点过时了。