web-dev-qa-db-ja.com

アサーションを実行する前に、遷移ページがリダイレクトされるのをSeleniumに待機させる方法

私はかなり標準的な状況にあります。ボタンをクリックすると、プログレスバーなどのトランジションページが読み込まれ、そのページが次のページにリダイレクトされます。読み込みには時間がかかります。

遷移ページではなく、最終ページでアサーションを実行したいと思います。 Selenium IDEに、アサーションを実行する前に最後のページが読み込まれるまで待機するように指示するにはどうすればよいですか?

ありがとうございました。

23
marc esher

簡単なアプローチは、その最後のページで「特定の」テキストを待つことです。詳細については、「waitForText」コマンドを参照してください。

14
John

Johnのアプローチに追加するには、Seleniumwaitメカニズムを使用して、最終ページの要素が次のように存在することを確認できます。

Java:

WebDriverWait wait = new WebDriverWait(webDriver, 10); // seconds
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("foo")));

ルビー:

wait = Selenium::WebDriver::Wait.new(timeout: 10) # seconds
wait.until { driver.find_element(id: "foo") }

これは、関連するリダイレクトに適切に従います。

https://code.google.com/p/Selenium/wiki/RubyBindings の例

8
josh-cain

Wait_for_pageを2回続けて呼び出すことができます。最初はリダイレクトを待ち、2番目は最後のページを待ちます。

1
Ben Flynn

ページタイトルが期待値になるまで待つこともできます。

$driver->wait()->until(WebDriverExpectedCondition::titleIs('New page title from redirect'));
0
CIRCLE