Appium + Android + webdriverio, как нажать на элемент списка - PullRequest
0 голосов
/ 04 октября 2018

Я начал использовать Appium для запуска теста пользовательского интерфейса в приложениях для Android (и, возможно, в iOS после того, как я заставлю его работать на Android)

Я пытаюсь запустить тест, используя nodeJS и webdriverio.

Дело в том, что я не могу щелкнуть элемент списка (список создается динамически, поэтому все элементы имеют одинаковый идентификатор)

Вот код узла.Когда я запускаю его, appium корректно запускает эмулятор и открывает мое приложение:

const wdio = require("webdriverio");

const opts = {
  port: 4723,
  desiredCapabilities: {
    platformName: "Android",
    platformVersion: "8.0",
    deviceName: "Android Emulator",
    app: "/path/to/application.apk",
    appWaitActivity: "com.package.SomeActivity",
    automationName: "UiAutomator2",
    avd: "Nexus_5X_API_26"
  }
};

const client = wdio.remote(opts);


client
  .init()
  .elements('id:theIdOfTheList') // This retrieves a list of 4 elements
  .element()[3] // This gives a NoSuchElementError
  .end();

Что я должен использовать вместо .element()[3], чтобы сделать эту работу (или есть совершенно другой способ, которым я должен это сделать?)

Я вижу в appium, что получены 4 элемента списка:

Получен ответ со статусом 200: {"sessionId": "1c21baa1-60ec-4e5f-b51f-f738698660ad», "статус": 0, "значение": [{ "ЭЛЕМЕНТ": "53d31f1f-af25-4621-85cd-b2f881a5c770"}, { "ЭЛЕМЕНТ": "4c3909ab-6f65-426a-b831-9a7d5e069ba8"}, {"ELEMENT": "e0fd1f12-0193-48ea-a168-4d45f63d27b3"}, {"ELEMENT": "87b7abda-3738-4411-a544-572243cd7502"}]}

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Как насчет этого?(Я использую режим синхронизации для webdriverio).Это может работать в асинхронном режиме.

client
.init()
.elements('id:theIdOfTheList', function(err, resp) {
 resp.value.forEach(function(elem) {
  // log elem
       })
  })
.end();
0 голосов
/ 05 октября 2018

Я не знаком с Node.js, но, судя по всему, вы нигде не храните этот массив элементов, и ваш последующий вызов element () просто ищет другой не связанный элемент.Поскольку вы не указали никаких параметров поиска, он ничего не находит.

Извините за незнание вашего языка, но что-то вроде следующего должно дать вам то, что вы хотите:

.elements('id:theIdOfTheList')[3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...