如何使用Appium将按键发送到Ionic 4输入?

时间:2018-12-27 09:36:51

标签: appium appium-ios

我正在使用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>

在我的Appium测试中,我想将键发送到此输入。我在Chrome开发工具中注意到,在离子输入下方,离子输入在阴影dom中由Ionic创建了本机输入。所以-经过一番谷歌搜索-我是这样追求的:

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:消息:元素不再附加到DOM”。

我正在通过以下方法解决此问题:

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中的输入的正确方法是什么?

0 个答案:

没有答案