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