我有一个场景,我需要输入电子邮件并点击提交按钮,但当webdriver输入电子邮件并点击提交按钮时,会抛出错误"需要电子邮件"虽然webdriver输入了我能看到的电子邮件。我在桌面和移动设备上都有这个问题在Firefox和Safari上。通过一些研究,我可以使用以下javascript代码修复Firefox。
JavascriptExecutor js = ((JavascriptExecutor)driver);
js.executeScript("var e=document.getElementById('email'); e.dispatchEvent(new Event('change')); e.dispatchEvent(new Event('blur')); return true;" );
但是相同的代码不适用于真实设备上的移动Safari。有人可以帮忙解决这个问题吗?
环境
Appium version - 1.6.5 Mac os : 10.12.6 Node.js version - 3.10.10
Mobile platform/version under test: - 10.3 Iphone 6 Real device Using
Appium desktop client Logs: <script
src="https://gist.github.com/mahesh-thuma/f02f6fdc81d48d4c0a16e2dd71412e0c.js"></script>
答案 0 :(得分:0)
找出问题所在。从桌面(&#34; email
&#34;)到移动设备(&#34; Email
&#34;)的电子邮件属性发生了细微变化。相应地修改了javascript,我可以继续前进。虽然这仍然是一种解决方法,但可以完成工作。关闭这个问题,感谢任何人投入时间。
答案 1 :(得分:0)
从“ ./page”导入页面;
类YahooPage扩展了页面{ / ** *定义元素 * /
get searchInput() { return browser.element('#yschsp'); }
get searchButton() { return browser.element('//div[@class="mag-glass"]'); }
get resultsList() { return browser.element('#results'); }
/**
* define or overwrite page methods
*/
open () {
super.open('https://search.yahoo.com') //provide your additional URL if any. this will append to the baseUrl to form complete URL
browser.pause(1000);
}
enterText (item) {
this.searchInput.clearElement();
this.searchInput.setValue(item);
}
search () {
this.searchButton.click();
}
isSearched () {
this.resultsList.waitForVisible(1000);
return this.resultsList.isVisible();
}
}
导出默认的新YahooPage(); enter code here