Javascript 如何通过资源id获取元素?

Javascript 如何通过资源id获取元素?,javascript,appium,appium-android,Javascript,Appium,Appium Android,我花了几个小时尝试使用appium javascript客户端按id搜索元素,但运气不好。我在stack overflow中发现了一些其他帖子,说明它是有效的,但对我来说不起作用。似乎我可以使用类似于: var buttonEl = await driver.findElement(By.id("resourceid")); 但我总是会犯这样的错误: InvalidSelectorError: Locator Strategy 'css selector' is not s

我花了几个小时尝试使用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参数作为定位器策略。请在此阅读应用程序选择器的文档

试试这个

var buttonEl = await driver.element("id", "resource-id");

我终于解决了我的问题。主要问题是我没有使用所需的web驱动程序。我切换到WebDrivero,现在一切正常


最好从检查appium github中的示例开始。他们为每个司机都举了一些例子。代码有点过时。

?是的,我在询问之前也试过这个。也不行。同样,driver.element不存在。更明确一点->TypeError:driver.element不是一个函数您可以提供您用作解决方案的任何代码吗?将对未来的用户有所帮助