Я использую Ionic 4 (бета) и не уверен, что лучший (/ самый простой) способ - отправить ключи в поле ввода с помощью Appium.
Ионный HTML-код:
<form>
<ion-item>
<ion-label position="floating">E-mail</ion-label>
<ion-input [formControl]="email" id="sign-in-email-input" type="email" autofocus="true"></ion-input>
</ion-item>
</form>
В моем тесте на аппиум я хочу отправить ключи на этот вход.Я заметил в инструментах разработчика Chrome, что под ионным входом Ionic создает собственный вход, который находится в тени.Итак, после некоторого поиска в Google, я иду следующим образом:
email = driver.find_element_by_id('sign-in-email-input')
jsCommand = "return arguments[0].shadowRoot.querySelector('input');"
emailNative = driver.execute_script(jsCommand, email)
emailNative.send_keys('test@test.com')
Но команда send_keys выдает «StaleElementReferenceException: Message: Элемент больше не присоединен к DOM».
I 'я обхожу это, выполнив:
email = driver.find_element_by_id('sign-in-email-input')
jsCommand = "arguments[0].shadowRoot.querySelector('input').value = 'test@test.com';"
driver.execute_script(jsCommand, email)
Это, кажется, сначала работает (я вижу, что значение появляется в симуляторе IOS).Но когда фокус перемещается в другое поле, значение исчезает.
Как правильно отправить ключи с Appium на вход в Ionic 4?