2

Ich beginne gerade mit Selenium und schrieb eine Reihe von Tests mit Chrome. Ich habe dann versucht, die gleichen Tests mit Firefox durchzuführen, aber die meisten von ihnen scheitern.Firefox wird darauf warten, dass eine neue Seite geladen wird, nachdem auf einen Link in Selenium geklickt wurde.

Ich habe eine Reihe von Tests, die ein bisschen wie diese sind:

1. Find link 
2. Click link 
3. Confirm the title of the new page matches what I expect 

Dies funktioniert in Chrome, aber in Firefox 3 Schritt scheint sofort ausgeführt werden, bevor der Browser Zeit hatte zu laden Die Seite. Alle Tests sind bestanden, wenn ich ein paar Sekunden warten muss, aber das würde ich lieber vermeiden.

Ist dies ein Konfigurationsproblem oder gibt es eine bessere Möglichkeit, die Tests zu schreiben, um die Kompatibilität zu verbessern?

Dies sind die Grundlagen eines Tests, in Chrome funktioniert, aber nicht in Firefox

link = driver.find_element_by_link_text(link_text) 
link.click() 
# Check if `driver.title` contains `title` 
assert title in driver.title 

ein time.sleep(2) Einfügen nach dem Klick funktioniert es machen.

(Ich bekomme die gleiche Art von Fehler mit meinem Authentifizierungstest: Formular ausfüllen, klicken Sie auf Senden, bestätigen Benutzer wird auf der rechten Seite weitergeleitet. In Chrome geht dies, in Firefox die Vorwärts-Prüfung erfolgt gegen die Anmeldeseite . da noch der Browser nicht beendet hat, auf die neue Seite umgeleitet ich den Bericht, dass die Tests nicht bestanden, und eine Sekunde später der Browser rendert die erwartete Seite)

Antwort

2

Sie folgende anwenden können.

from selenium.webdriver.support.ui import WebDriverWait as wait 
from selenium.webdriver.support import expected_conditions as EC 

current_title = driver.title # get current title 
link = driver.find_element_by_link_text(link_text) 
link.click() 
wait(driver, 10).until(lambda driver: driver.title != current_title) # wait for title to be different than current one 
assert title in driver.title 
+0

Danke, das hat funktioniert. –

+1

Willkommen. Sie können 'selen.webdriver.supportimport expected_conditions als EC' tatsächlich entfernen, da ich' lambda' anstelle von 'Expected Conditions' verwendet habe, daher wurde dieser Import fälschlicherweise hinzugefügt – Andersson

Verwandte Themen