2011-05-05 154 views
0

我需要單擊基於Java的應用程序的取消按鈕。 我使用IE驅動程序,Eclipse IDE和我的應用程序只支持IE瀏覽器。[我是腳本中的Java]使用IE webdriver處理JS警報,Selenium

這裏的情況是,

  1. 登錄到應用
  2. 有一個賬戶會話彈出[確認框] [JS] [警報具有焦點,用戶不能集中應用]
  3. 點擊取消按鈕

現在,我已成功登錄,但我無法處理JS Alert窗口。所以我無法編寫更多腳本。

請幫助我!

回答

1

如果您使用的是Java,以及您所使用的硒webdriver的API,類似下面的代碼應工作:

driver.switchTo().alert().dismiss(); 

報警處理尚未實現每一個驅動程序,但它應該工作爲IE。

請記住,您始終可以在this link找到WebDriver API的Javadocs。

+0

爲什麼不支持的webdriver API isAlertPresent? SwitchTo與catch塊感覺古怪。 OTOH,如果我錯過檢查警報,下一個API會拋出UnhandeledAlertExe自動關閉警報。 Jim,爲什麼webdriver在拋出Unhandeled Alert Exe時會關閉警報?假設,我不想預先檢查警報,這使我無法在警報發生後接受警報。問你,因爲你是IE驅動程序的核心貢獻者,並且對此決定有深刻的理解,可以排除異常警報。謝謝 – 2013-01-11 09:46:45

+0

您應該查看[unhandledAlertBehaviour功能](http://code.google.com/p/selenium/wiki/DesiredCapabilities)。它提供了您正在查找的控件是否UnhandledAlertException應該關閉警報。至於爲什麼沒有isAlertPresent()API,你不得不問API的架構師,我不是其中之一。 – JimEvans 2013-01-11 14:03:30

+0

我注意到了。但似乎現在只是它的IE瀏覽器。似乎還沒有被FF和Chrome採用。但很好的補充。 WebDriver本應允許測試作者在從第1天起捕獲未獲取的alert alert之後作出接受/解僱決定。 – 2013-01-11 14:04:26

-1

在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 
+0

這些功能與警報處理沒有任何關係。實際上,**不設置'ignoreProtectedModeSettings'功能通常是最佳做法。 [這篇博文](http://jimevansmusic.blogspot.com/2012/08/youre-doing-it-wrong-protected-mode-and.html)解釋了原因。 – JimEvans 2013-05-13 12:56:54

相關問題