1

ログインフォームを使用し、ページタイトルが変更されたことを確認してログインが成功したことを確認する Selenium 2 テストがあります。

テストはJava/JUnitWebDriver、およびFluent Seleniumで記述されています

fwd.title().within(secs(5)).shouldContain(partialTitle);

テストは Firefox と Chrome で動作します。Safari では、ページ タイトルは古いログイン ページ タイトルのままです。

生成したスクリーンキャストは、ログイン成功後の URL が変更されていることを示していますが、タイトルは変更されていません。

SafariDriverアサーションの前にページ読み込みイベントが完了するのを待っていないと思います。

4

2 に答える 2

1

私は同じ問題を抱えています!!! タイトルがテスト「ステップ」のチェックに使用されているため、テストが失敗します。

Firefox と Chrome では問題ありません。Safariでは問題です!!!

この「ハック」が機能することがわかりましたが、「クリック」するたびにタイトルを手動で確認する必要があります。

def static void waitForPage(driver, String title) {
    //Hack to make login working on Safari&IE
    (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
        public Boolean apply(WebDriver d) {
            return d.getTitle().startsWith(title);
        }
    });
}   
于 2015-01-26T08:46:08.477 に答える
0

私はGEB + SPOCKを使用しており、サファリドライバーには暗黙的/明示的な待機に関する「既知の問題」があります(参照https://code.google.com/p/selenium/issues/detail?id=5860 )。

したがって、Safari ブラウザーでテストを実行可能にするための適切な回避策は、ページ タイトルを待機することです。

static at = {
     waitFor { title == "Homepage" }
}

これにより、ドライバーはタイトルが変更されるまで強制的に待機します (タイムアウトは構成可能です)。

于 2015-01-29T07:43:53.047 に答える