在硒框架2.25中,我看到我們有UnexpectedAlertBehaviour枚舉類型,但我不知道如何使用它。如何在Selenium中使用「UnexpectedAlertBehaviour」功能處理警報?
回答
,我發現文件對您的問題這一部分: 這可能是爲其他人也有用:
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
}
+1 ,如有疑問,請下載源代碼並進行挖掘! – Arran
我不這麼認爲。事實上,UnexpectedAlertBehaviour並不是alert.accept()引發的異常。 –
這是一個枚舉,不是一個拋出或捕獲的異常。 –
這是一個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);
嘗試做這樣的:在Python我使用此代碼添加了此行爲,以我的Firefox司機
DesiredCapabilities ff = DesiredCapabilities.firefox();
ff.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR UnexpectedAlertBehaviour.ACCEPT);
要管理任何你可以得到錯誤的,你只有使用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
- 1. 如何在Firefox中使用Selenium處理安全警報
- 2. 如何在IE中使用Selenium處理安全警報彈出
- 3. 使用IE webdriver處理JS警報,Selenium
- 4. 如何使用python處理selenium中的javascript警報
- 5. Selenium WebDriver(Selenium 2)的處理警報
- 6. Selenium Webdriver中的警報處理
- 7. 如何在Selenium IDE中處理頁面加載警報?
- 8. 如何處理在Selenium中彈出的IE安全警報
- 9. 如何在Selenium WebDriver中處理間歇性警報?
- 10. 如何使用Python處理警報?
- 11. 在Java中使用HtmlUnitDriver處理警報
- 12. Selenium WebDriver(selenium 2)和Java中的警報處理
- 13. Selenium IDE - 如何處理java腳本警報和確認
- 14. Python Selenium Webdriver:如何處理警報窗口
- 15. 如何處理硒中SafariDriver的警報?
- 16. 如何在SSLHandshake中處理警告和致命警報
- 17. 報警中重複功能
- 18. 如何使用java在selenium webdriver中獲取警報的標題?
- 19. 如何從報警管理器調用活動的功能
- 20. 如何使用iOS中的兩個按鈕處理警報uiautomation
- 21. 如何使用javascript處理UI自動化中的警報?
- 22. 警報 - Selenium
- 23. 如何等待Selenium webdriver中的警報?
- 24. 如何處理警報點擊從UIWebview產生的警報。
- 25. 如何處理「意外警報打開」?
- 26. 如何處理警報拉網
- 27. 如何處理Firefox上的警報10
- 28. 如何處理硒彈出/警報RC
- 29. 在webdriver 2.21和mozilla11中處理警報
- 30. 如何使用Selenium和Java驗證警報是否存在
這可能是根本原因嗎?繞過調用fxdriver.modals.clearFlag_ ... cf. https://stackoverflow.com/questions/44568402/how-do-i-manually-mouse-dismiss-a-javascript-alert-and-get-back-the-the-body-o/44592827#44592827 – NevilleDNZ