Как я могу получить доступ к элементам HTML по (отсутствующему) идентификатору в транспортире при работе на Android? - PullRequest
0 голосов
/ 26 сентября 2019

Я запускаю транспортир в приложении ionic (4) angular (7), которое может запускать тесты с помощью appium.

Тест у меня работает нормально, когда он пытается найти элементы с помощью CSS, но не удается, когдапоиск по идентификатору.

Я получаю

 NoSuchElementError: No element found using locator: By(css selector, *[id="login-button"])

Тем не менее, тест работает нормально в браузере без cordova / android, но я заметил, что все идентификаторы отсутствуют в HTML-коде приложения cordova / android

enter image description here

, что хорошо в примечании браузера (не приложения): id="login-button"

enter image description here

Я пытался добавить

var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(button), 10000)

, но браузер ждет вечно.

Например, в моем HTML

<ion-button id="login-button" class="login-btn" (click)="login()">LOGIN</ion-button>

Затем в тесте

const button = await element(by.id('login-button'))
button.click();

Я ожидаю, что тест нажмет кнопку и перейдет к следующей странице, но тест не пройден только на Android.

Мне нужно иметь возможность искать / находить по идентификаторам, потому чтоиногда я динамически генерирую идентификаторы на основе ngFor и т. д. Он может найти все остальные элементы по CSS, но не по идентификатору.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Прежде всего, прочитайте о await ключевом слове, как его использовать, а затем попробуйте

var EC = protractor.ExpectedConditions;
await browser.wait(EC.presenceOf(button), 10000)

const button = element(by.id('login-button'))
await button.click();

Тогда, если не сработает, пингуйте меня, мы попробуем что-то другое

0 голосов
/ 26 сентября 2019

Похоже, вы все еще можете найти их по классу

element(by.css('.login-btn.md.button.button-solid.ion-activatable.ion-focusable.hydrated'));

Или с помощью buttonText?

element(by.buttonText("LOGIN"));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...