2012-10-16 79 views

回答

9

,我發現文件對您的問題這一部分: 這可能是爲其他人也有用:

v2.25.0

=======

的webdriver:

  • 新增的API來處理基本和數字認證

    對話框。目前尚未在任何驅動程序中實施

  • 警告用戶IE瀏覽器驅動程序將不再使用DLL在

    下一個版本。

  • 棄用的瀏覽器特定的WebElement子類。對於「requiredCapabilities」遠程webdrivers

    和實施火狐

    驅動程序,這些基本的支持

  • 增加的支持。如果未能滿足所需的功能,將導致引發SessionNotCreatedException異常

  • 增加了確定如何處理未處理的警報應該如何處理的功能 。這是由「unexpectedAlertBehaviour」能力處理的,其可以是「接受」,「解僱」或「忽略」之一。 Java代碼應該使用UnexpectedAlertBehaviour 枚舉。目前這隻在Firefox中實現。

  • 允許本地事件在Firefox在IE使用 「nativeEvents」 的能力被配置和

    (實驗)。

  • 更新支持火狐至17

版本.....

整個列表提供here

的這裏是source

package org.openqa.selenium; 

    public enum UnexpectedAlertBehaviour { 

     ACCEPT ("accept"), 
     DISMISS ("dismiss"), 
     IGNORE ("ignore") 
     ; 

     private String text; 

     private UnexpectedAlertBehaviour(String text) { 
     this.text = text; 
     } 

     @Override 
     public String toString() { 
     return String.valueOf(text); 
     } 

     public static UnexpectedAlertBehaviour fromString(String text) { 
     if (text != null) { 
      for (UnexpectedAlertBehaviour b : UnexpectedAlertBehaviour.values()) { 
      if (text.equalsIgnoreCase(b.text)) { 
       return b; 
      } 
      } 
     } 
     return null; 
     } 
    } 

由於我看到你使用unexpectedAlertBehaviour來決定e警報是否未處理,如果是這樣,您將決定如何處理警報。

我想這應該是這樣的(我的假設):

try{ 
alert.accept(); 
} 

catch(org.openqa.selenium.UnexpectedAlertBehaviour){ 
///...blablabla 
} 
+0

+1 ,如有疑問,請下載源代碼並進行挖掘! – Arran

+3

我不這麼認爲。事實上,UnexpectedAlertBehaviour並不是alert.accept()引發的異常。 –

+0

這是一個枚舉,不是一個拋出或捕獲的異常。 –

2

這是一個CapabilityType,所以你要表達它,你創建驅動程序時傳遞DesiredCapabilities。

 selenium.webdriver.DesiredCapabilities.FIREFOX["unexpectedAlertBehaviour"] = "accept" 

我沒有測試過這個Java,但在理論上它應該工作:

DesiredCapabilities cap = new DesiredCapabailities(); 
cap.setPreference(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, 
    org.openqa.selenium.UnexpectedAlertBehaviour.ACCEPT); 
WebDriver driver = new FirefoxDriver(cap); 
0

嘗試做這樣的:在Python我使用此代碼添加了此行爲,以我的Firefox司機

DesiredCapabilities ff = DesiredCapabilities.firefox(); 
ff.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR UnexpectedAlertBehaviour.ACCEPT); 
0

要管理任何你可以得到錯誤的,你只有使用Exception NAMEERROR這樣投入一個try /塊:

from selenium.common.exceptions import UnexpectedAlertBehaviour 
from selenium.common.exceptions import UnexpectedAlertPresentException 
try: 
    var = driver.some_function() 
    return True 
except UnexpectedAlertBehaviour: 
    print "We have raised the UnexpectedAlertBehaviour" 
    return False 
except UnexpectedAlertPresentException: 
    print "UnexpectedAlertPresentException" 
    return False 

我知道這段代碼不在Java中,但基礎是一樣的。嘗試/捕獲異常的名稱。你可以在我的帖子中看到這個例子()處理here

相關問題