Как определить поле с идентификатором в Appium с помощью CodeceptJS?

Я пытаюсь использовать CodeceptJS (который использует Appium) для тестирования собственного приложения для Android. Я хочу использовать метод I.seeElement, чтобы увидеть, что поле присутствует, но сервер Appium просто зависает без сообщения об ошибке.

Этот шаг состоит в том, чтобы ввести номер телефона, чтобы пользователь мог войти в систему. Я мог нажать кнопку до этого, но это потому, что я мог использовать простой текстовый идентификатор.

Вот что я написал. (Метод I.click работает, когда он нажимает кнопку.)


// in this file you can append custom step methods to 'I' object

module.exports = function() {
  return actor({

    login: function (I) {
        I.click('ALLOW');
        I.seeElement('#com.[package name removed]:id/phone');
    }

  });
}

Это сообщение об ошибке:

[HTTP] --> POST /wd/hub/session/5e57e7af-ca1c-46bf-94ac-7e2f113a26fa/elements
[HTTP] {"using":"xpath","value":"//*[@resource-id='com.[package name removed]:id/phone']"}
[debug] [W3C (5e57e7af)] Calling AppiumDriver.findElements() with args: ["xpath","//*[@resource-id='com.[package name removed]:id/phone']","5e57e7af-ca1c-46bf-94ac-7e2f113a26fa"]
[debug] [BaseDriver] Valid locator strategies for this request: xpath, id, class name, accessibility id, -android uiautomator
[debug] [BaseDriver] Waiting up to 0 ms for condition
[debug] [AndroidBootstrap] Sending command to android: {"cmd":"action","action":"find","params":{"strategy":"xpath","selector":"//*[@resource-id='com.[package name removed]:id/phone']","context":"","multiple":true}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {"cmd":"action","action":"find","params":{"strategy":"xpath","selector":"//*[@resource-id='com.[package name removed]:id/phone']","context":"","multiple":true}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: find
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Finding '//*[@resource-id='com.[package name removed]:id/phone']' using 'XPATH' with the contextId: '' multiple: true

person Adam Wier    schedule 17.07.2019    source источник


Ответы (2)


Вы можете использовать интеллектуальный селектор, например, в каком-то примере динамического идентификатора:

'div[id$="test"] textarea'    //ends with id test
'[id^='test']'      //start with id test

также вы можете использовать умные локаторы, см. локаторы codeceptjs

person Vitaly Menchikovsky    schedule 18.07.2019
comment
Спасибо, что нашли время ответить, но это похоже на код для тестирования веб-сайта, а я тестирую собственное приложение для Android. Я думаю, что это не было явным в моем первоначальном вопросе, поэтому я собираюсь обновить его. - person Adam Wier; 22.07.2019

Используйте текст для элемента, который вы должны увидеть. I.seeElement ("~ ТЕКСТ ЭЛЕМЕНТА")

person Manoj Kumar    schedule 21.07.2019
comment
Спасибо за ответ, но это поле. Я понимаю, что должен был указать это в вопросе и обновить его. Если я правильно понял, для поля нет текста. - person Adam Wier; 22.07.2019