如何通过资源ID获取元素?

时间:2020-09-04 22:10:25

标签: javascript appium appium-android

我花了几个小时尝试使用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元素。

任何帮助将不胜感激。

2 个答案:

答案 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中的示例。他们为每个驾驶员提供一些示例。代码有点过时了。