Как получить элемент по идентификатору ресурса?

#javascript #appium #appium-android

#javascript #appium #appium-Android

Вопрос:

Я потратил несколько часов, пытаясь выполнить поиск элемента по идентификатору с помощью appium javascript client, но безуспешно. Нашел несколько других сообщений здесь, в 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, но, с другой стороны, я читал о людях, успешно использующих его.

Любая помощь была бы с благодарностью принята.

Комментарии:

1.appium.io/docs/en/commands/element/find-element ?

2. Да, я тоже пробовал это, прежде чем спрашивать. Тоже не работает. То же самое, driver.element не существует.

3. Чтобы быть немного более явным -> TypeError: driver.element не является функцией

Ответ №1:

Я думаю, что вы используете аргументы selenium для стратегии локатора. Пожалуйста, прочитайте документацию appium selector здесьhttp://appium.io/docs/en/commands/element/find-elements/index.html#selector-strategies.

попробуйте это

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

Ответ №2:

Наконец-то я смог решить свою проблему. Основная проблема заключалась в том, что я не использовал необходимый веб-драйвер. Я переключился на webdriverio, и теперь все работает.

Лучше всего начать с проверки примеров в appium github. У них есть несколько примеров для каждого драйвера. Хотя код немного устарел.

Комментарии:

1. Не могли бы вы предоставить любой код, который вы использовали в качестве решения? Было бы полезно для будущих пользователей