Selenium フレームワーク 2.25 では、UnexpectedAlertBehaviour 列挙型があることがわかりますが、その使用方法がわかりません。
5 に答える
あなたの問題に関するドキュメントのこの部分を見つけました: これは他の人にも役立つかもしれません:
v2.25.0
=======
ウェブドライバー:
BASIC および DIGEST 認証を処理するための API を追加
ダイアログ。現在、どのドライバーにも実装されていません。
IE ドライバーが DLL を使用しないことをユーザーに警告します。
次のリリース。
非推奨のブラウザー固有の WebElement サブクラス。
リモート Web ドライバーに「requiredCapabilities」のサポートを追加
これらの基本的なサポートをFirefoxで実装しました
運転者。必要な能力を満たさない場合、
スローされる SessionNotCreatedException。
未処理のアラートの処理方法を決定する機能が追加されました。これは、「unexpectedAlertBehaviour」機能によって処理されます。これは、「accept」、「dismiss」、または「ignore」のいずれかです。Java コードは UnexpectedAlertBehaviour 列挙型を使用する必要があります。これは現在、Firefox でのみ実装されています。
ネイティブ イベントを Firefox で構成できるようにし、
(実験的に)「nativeEvents」機能を使用してIEで。
サポートされている Firefox のバージョンを 17 に更新しました。
.....
ここに提供されている全リスト
ソースはこちら
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 を使用して、アラートが処理されていないかどうかを判断し、そうである場合は、それを処理する方法を決定します。
私はそれが次のようなものであるべきだと思います(私の仮定):
try{
alert.accept();
}
catch(org.openqa.selenium.UnexpectedAlertBehaviour){
///...blablabla
}
これは CapabilityType であるため、ドライバーの作成時に渡す DesiredCapabilities で表現する必要があります。Python では、次のコードを使用して、この動作を FireFox ドライバーに追加しました。
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);
Exception NAMEERROR
発生する可能性のあるエラーを管理するには、次のように try/block を使用するだけです。
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 ではないことはわかっていますが、基本は同じです。例外の名前で Try/Catch します。この例は、alerts() の処理に関する私の投稿で見ることができます。
このようにしてみてください:
DesiredCapabilities ff = DesiredCapabilities.firefox();
ff.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR UnexpectedAlertBehaviour.ACCEPT);