0

私は、XP および Win7 32/64 ビット マシンで長期間にわたって非常にうまく機能した、かなり大きな Selenium テスト セット (約 180) を持っています。

最近、Windows 7 の更新後 (偶然かもしれません)、テストが信頼できなくなりました。それらはランダムに失敗しますが、常に同じ問題が発生します。予期した画面が表示されますが、WaitForPageToLoad() メソッドはこれを確認するために戻りません。これは XP マシンでは発生せず、最近更新された Win7 マシンでのみ発生します。

プラットフォーム: Win7、32 および 64 ビット、Selenium 1.0 および 2.33.0 (動作に違いはありません)、VS2008、ブラウザー IE9。

シナリオ: テストは、最初に 1 つのボタンを含む「再起動」画面を表示し、ログイン画面を起動するボタンをクリックします (すべてのテストは、これを行うために同じコードを使用します)。ブラウザにログイン画面が表示されるがテストライン

selenium.WaitForScreenToDisplay(30000);

戻らないため、テストはエラー メッセージでタイムアウトします。このように、テストは完全に無作為に失敗します - それらの約半分は失敗しますが、一貫して同じものではありません。

人間がブラウザと対話するとき、アプリケーション自体は完全に動作します。セレンのログは手がかりをあまり与えません - 最後の行は常に「ページを待っています」、例えば「....コマンド要求:waitForPageToLoad [30000、... ]」です。

VS デバッガーでテストをステップ実行しても、問題が再現されることはありません。

問題が発生する実際のコードは次のとおりです。

    selenium.Open(GetRestartPageURL());
    selenium.WaitForPageToLoad("30000");

    selenium.Click("Button");
    selenium.WaitForPageToLoad("30000"); <-- this is where it times out even though the expected screen that is launched by "Button" is now displayed in the browser

既知の問題、またはこれに対する回避策はありますか? IE9 と Selenium 1.0 の問題ですか? それは重要な時期に突然現れます。

4

1 に答える 1

1

これは IE9/10 および/または Selenium のバグ、または少なくとも IE9/10 のバグであることが判明し、Selenium 関係者はすぐには対応していないようです。ブラウザで window.document.readyState を確認し、遅延を監視する独自の WaitForPage メソッドを作成して、タイムアウトを回避しました。

他の誰かに役立つ場合のコードは次のとおりです。

internal static void WaitForPageToLoad(ISelenium selenium)
{
    //Wait until the browser reports that it is no longer loading the page, or 'timeOut' has been reached.
    //Pause 1/4 second between attempts (should normally be sufficient for the page to load, unless it is a very slow page)
    const int timeOut = 30000; //mS
    const int pause = 250;     //mS

    int timeWaited = 0;

    do
    {
        System.Threading.Thread.Sleep(pause);
        timeWaited += pause;
    }
    while (selenium.GetEval("window.document.readyState") != "complete" && timeWaited<timeOut);

    if (timeWaited >= timeOut)
    {
        //abort test and notify error:
        Assert.Fail("Expected page was not dislpayed");
    }
}

このバグを参照する Selenium バグ トラッカーには、16392451の 2 つの問題があります。

于 2013-06-14T08:43:01.613 に答える