2010-01-06 2 views
16

Ich habe eine ziemlich Standard-Situation: Klicken Sie auf eine Schaltfläche, lädt eine Übergangsseite mit einem Fortschrittsbalken oder etwas, und dann diese Seite zum nächsten umgeleitet Seite, die eine Weile dauert, um zu laden.Wie Selenium auf eine Übergangsseite zum Umleiten warten, bevor eine Assertion ausgeführt wird

Ich möchte Assertionen auf der letzten Seite, nicht auf der Übergangsseite ausführen. Wie kann ich der Selenium IDE mitteilen, dass sie warten soll, bis die letzte Seite geladen wird, bevor die Assertionen ausgeführt werden?

Vielen Dank.

Antwort

13

Ein einfacher Ansatz wäre für einige „besondere“ Text auf die letzte Seite werden warten, finden Sie unter „waitForText“ Befehl für weitere Informationen über sie

+0

süß. Eine Sache, die ich tat, war das Hinzufügen eines Befehls setTimeout target = XXXX (in ms) vor dem waitForText, und das reduzierte die Zeit, die gewartet wurde, als die Assertion nicht erfüllt wurde. Vielen Dank, John. –

+1

Sie können auch waitForLocation verwenden und ihr die URL geben. – user3735633

+0

Wie warten SieForLocation? – poyger

1

Sie könnten wait_for_page zweimal hintereinander anrufen. Der erste wartet auf die Weiterleitung, der zweite auf die letzte Seite.

5

zu Johns Ansatz hinzuzufügen, können Sie die Selenium verwenden warten Mechanismus, um sicherzustellen, dass die Elemente auf der endgültigen Seite vorhanden sind, etwa so:

Java:

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

Rubin:

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

Dieser Wille Befolgen Sie alle relevanten Weiterleitungen.

Beispiel von https://code.google.com/p/selenium/wiki/RubyBindings

0

können Sie auch warten, bis der Seitentitel ein erwarteter Wert ist:

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