2016-04-21 2 views
0

Ich habe einen Test in Ruby/Cucumber, der über mehrere aufeinanderfolgende Seiten eines Webservice läuft. Ich muss warten, bis eine bestimmte Seite fertig ist und geschlossen, um den Inhalt der folgenden Seite zu überprüfen.Ruby warten bis sich die Webseite geändert hat

Alles andere funktioniert gut, abgesehen davon, wenn der Test auf die falsche Seite schaut.

Ich habe gesehen, es gibt warten & bis Methoden, aber ich weiß nicht, wie Sie sie auf die Überprüfung der aktuellen URL anwenden - wie kann ich mein Programm warten, bis die zu überprüfende Seite geöffnet hat?

Jede Hilfe würde sehr geschätzt werden.

Danke für die Kommentare. Die Tests laufen Selen Webdriver und Firefox-Browser. Hoffe, das macht es klarer.

Der Code sofort, bevor ich es warten soll, ist:

def confirm_payment 
    within_frame(find('iframe')) do 
    find_by_id('CompanyLogo').click 
    end 
end 

Welches ist der letzte Schritt in diesem Block ist:

if @pymnt_rqd == "y" 
    confirm_customer_details 
    enter_payment_card_details 
    confirm_payment 
#wait here until the page has turned to the response screen 
    end 

Und ich brauche es, zu warten, bis die Seite, bevor gedreht hat werde dies:

#Check the text on the response screen against the csv file. 
    check_response_screen 
+1

Haben Sie Code, der darstellt, wie Ihr Test aussieht, sogar grob? – tadman

+1

Willkommen bei Stack Overflow. Wir brauchen mehr Details. Bitte lesen Sie "[fragen]" und "[mcve]". Wie Ihre Frage ist breit und allgemein, aber Stack Overflow ist über Besonderheiten. –

+0

Vielen Dank für Ihre Antworten. – Peter

Antwort

0

für eine neue Seite warten, könnten Sie für einen neuen Körper warten:

require 'selenium-webdriver' 

driver = Selenium::WebDriver.for :chrome 
wait = Selenium::WebDriver::Wait.new(timeout: 10) 

driver.navigate.to "http://stackoverflow.com/" 

# get the body element 
body = driver.find_element(:css, "body") 

# do something to change the page 
... 

# wait for a new page (new body) 
wait.until {driver.find_element(:css, "body") != body}