Javascript在Safari浏览器实际设备上不起作用

时间:2017-08-29 14:14:32

标签: javascript jquery selenium-webdriver safari

我有一个场景,我需要输入电子邮件并点击提交按钮,但当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>

2 个答案:

答案 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