5

Selenium フレームワーク 2.25 では、UnexpectedAlertBehaviour 列挙型があることがわかりますが、その使用方法がわかりません。

4

5 に答える 5

10

あなたの問題に関するドキュメントのこの部分を見つけました: これは他の人にも役立つかもしれません:

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
}
于 2012-10-16T12:00:02.517 に答える
3

これは 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);
于 2012-11-08T06:02:10.103 に答える
2

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() の処理に関する私の投稿で見ることができます

于 2015-06-09T12:23:52.073 に答える
0

このようにしてみてください:

DesiredCapabilities ff = DesiredCapabilities.firefox();
ff.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR  UnexpectedAlertBehaviour.ACCEPT);
于 2014-06-19T06:07:41.997 に答える