3

Selenium Web ドライバーを使用しています。ブラウザーで発生するイベントをリッスンしたいと考えています。たとえば、ページ上の一部の JavaScript によって URL が次のように変更された場合window.location = "...";

Navigated私のイベントにリスナーが接続されていEventFiringWebDriverます。ただし、ブラウザの URL が変更された場合、これは起動しません。このことから、Selenium はこの方法でイベントをリッスンできないと推測していますか?

ブラウザーまたはブラウザーからの DOM イベントにアタッチする適切な方法はありますか?

4

2 に答える 2

4

私はOpenQA.Selenium.Support.UI.WebDriverWaitこれを達成するためにオブジェクトを使用することができました。述語(ブラウザのURLでの比較)と期間を指定するだけです。Seleniumは、結果がtrueを返すか、タイムスパンが経過するまで500ミリ秒ごとに結果をチェックします。この場合、テストは失敗します。イベント駆動型ではありませんが、望ましい効果があります。

    private readonly IWebDriver _driver = new FirefoxDriver();

    [Test]
    public void UrlIsCorrect()
    {
        var w = new WebDriverWait(_driver, TimeSpan.FromSeconds(30));
        w.Until(driver => driver.Url == "http://test.com");
    }
于 2013-03-13T23:22:58.617 に答える
0

申し訳ありませんが、WebDriver API は DOM イベントを直接リッスンすることをサポートしていませんEventFiringWebDriver。. JavaScript を使用してイベント ハンドラーをイベントにアタッチし、JavaScript 変数をグローバル ページ コンテキストに設定して、WebDriver から読み取ることができるかもしれませんが、それは少し複雑です。このNavigatedイベントは、WebDriver ナビゲーション メソッドが完了したときを参照します。

于 2013-03-05T12:05:55.900 に答える