我需要單擊基於Java的應用程序的取消按鈕。 我使用IE驅動程序,Eclipse IDE和我的應用程序只支持IE瀏覽器。[我是腳本中的Java]使用IE webdriver處理JS警報,Selenium
這裏的情況是,
- 登錄到應用
- 有一個賬戶會話彈出[確認框] [JS] [警報具有焦點,用戶不能集中應用]
- 點擊取消按鈕
現在,我已成功登錄,但我無法處理JS Alert窗口。所以我無法編寫更多腳本。
請幫助我!
我需要單擊基於Java的應用程序的取消按鈕。 我使用IE驅動程序,Eclipse IDE和我的應用程序只支持IE瀏覽器。[我是腳本中的Java]使用IE webdriver處理JS警報,Selenium
這裏的情況是,
現在,我已成功登錄,但我無法處理JS Alert窗口。所以我無法編寫更多腳本。
請幫助我!
如果您使用的是Java,以及您所使用的硒webdriver的API,類似下面的代碼應工作:
driver.switchTo().alert().dismiss();
報警處理尚未實現每一個驅動程序,但它應該工作爲IE。
請記住,您始終可以在this link找到WebDriver API的Javadocs。
在IE處理警報,您需要先設置capabalities爲IE:
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setJavascriptEnabled(true); capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability("ignoreProtectedModeSettings", true); //added this to ignore protecion mode setting so as to launch IE
driver = new InternetExplorerDriver(capabilities);
driver.get("url");
driver.switchTo().alert().dismiss(); //or
driver.switchTo().alert().Accept(); // accordingly
這些功能與警報處理沒有任何關係。實際上,**不設置'ignoreProtectedModeSettings'功能通常是最佳做法。 [這篇博文](http://jimevansmusic.blogspot.com/2012/08/youre-doing-it-wrong-protected-mode-and.html)解釋了原因。 – JimEvans 2013-05-13 12:56:54
爲什麼不支持的webdriver API isAlertPresent? SwitchTo與catch塊感覺古怪。 OTOH,如果我錯過檢查警報,下一個API會拋出UnhandeledAlertExe自動關閉警報。 Jim,爲什麼webdriver在拋出Unhandeled Alert Exe時會關閉警報?假設,我不想預先檢查警報,這使我無法在警報發生後接受警報。問你,因爲你是IE驅動程序的核心貢獻者,並且對此決定有深刻的理解,可以排除異常警報。謝謝 – 2013-01-11 09:46:45
您應該查看[unhandledAlertBehaviour功能](http://code.google.com/p/selenium/wiki/DesiredCapabilities)。它提供了您正在查找的控件是否UnhandledAlertException應該關閉警報。至於爲什麼沒有isAlertPresent()API,你不得不問API的架構師,我不是其中之一。 – JimEvans 2013-01-11 14:03:30
我注意到了。但似乎現在只是它的IE瀏覽器。似乎還沒有被FF和Chrome採用。但很好的補充。 WebDriver本應允許測試作者在從第1天起捕獲未獲取的alert alert之後作出接受/解僱決定。 – 2013-01-11 14:04:26