问题
I have a fairly standard situation: Click a button, it loads a transition page with a progress bar or something, and then that page redirects to the next page, which takes a while to load.
I want to run assertions on the final page, not the transition page. How do I tell Selenium IDE to wait till the final page loads before performing the assertions?
Thank you.
回答1:
A simple approach would be wait for some "particular" text on that final page, see "waitForText" command for further info on it
回答2:
To add to John's approach, you can use the Selenium wait mechanism to verify that elements on your final page are present like so:
Java:
WebDriverWait wait = new WebDriverWait(webDriver, 10); // seconds
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("foo")));
Ruby:
wait = Selenium::WebDriver::Wait.new(timeout: 10) # seconds
wait.until { driver.find_element(id: "foo") }
This will properly follow any redirects involved.
Example from https://code.google.com/p/selenium/wiki/RubyBindings
回答3:
You could call wait_for_page twice in a row. The first waits for the redirect, the second for the final page.
回答4:
You can also wait until the page title is an expected value:
$driver->wait()->until(WebDriverExpectedCondition::titleIs('New page title from redirect'));
来源:https://stackoverflow.com/questions/2014168/how-to-get-selenium-to-wait-for-a-transition-page-to-redirect-before-running-an