Ich suche nach einer eleganteren Möglichkeit, die Webseite während der Tests zu aktualisieren (ich verwende Selenium2). Ich sende nur den F5-Schlüssel, frage mich aber, ob der Treiber eine Methode zum Aktualisieren der gesamten Webseite hat. Hier ist mein Code
while(driver.findElements(By.xpath("//*[text() = 'READY']")).size() == 0 )
driver.findElement(By.xpath("//body")).sendKeys(Keys.F5);
//element appear after text READY is presented
driver.findElement(By.cssSelector("div.column a")).click();
Vielleicht ist es eine bessere Lösung, um ein Element auf einer manuell aktualisierten Seite zu finden
selenium
refresh
webdriver
selenium-webdriver
pbaranski
quelle
quelle
driver.navigate().refresh()
In seinem Anforderungsheader steht "no-cache" und lädt daher bedingungslos den gesamten Inhalt neu. Während das Drücken von F5 zu einer "If-Modified-Since" -Anforderung führen kann, kann dies zu einer "304 Not Modified" -Antwort führen. Sie müssen diesen Unterschied berücksichtigen, wenn Sie Lasttests durchführen.In Python gibt es dafür eine Methode :
driver.refresh()
. In Java ist dies möglicherweise nicht dasselbe.Alternativ könnten Sie
driver.get("http://foo.bar");
, obwohl ich denke, dass die Aktualisierungsmethode gut funktionieren sollte.quelle
driver.get("http://foo.bar")
können Sie auch einfach verwendendriver.get(driver.current_url)
In Python
Mit eingebauter Methode
oder Ausführen von JavaScript
quelle
5 verschiedene Möglichkeiten, eine Webseite mit Selenium Webdriver zu aktualisieren
Es gibt keine spezielle zusätzliche Codierung. Ich habe gerade die vorhandenen Funktionen auf verschiedene Arten verwendet, damit es funktioniert. Hier sind sie :
Verwenden der sendKeys.Keys- Methode
Verwenden der Methode navig.refresh ()
Verwenden Sie die Methode navig.to ()
Verwenden der Methode get ()
Verwenden der sendKeys () -Methode
quelle
Verschiedene Ansätze zur Aktualisierung der Anwendung in Selen gefunden: -
Live-Code finden Sie unter dem Link http://www.ufthelp.com/2014/11/Methods-Browser-Refresh-Selenium.html
quelle
Hier ist die etwas andere C # -Version:
quelle
Alternative für Seitenaktualisierung (F5)
(oder)
quelle
Eine wichtige Sache, die zu beachten ist, ist, dass der Aufruf von driver.navigate (). Refresh () manchmal asynchron zu sein scheint, was bedeutet, dass er nicht auf den Abschluss der Aktualisierung wartet, sondern nur "die Aktualisierung startet" und die weitere Ausführung nicht blockiert während der Browser die Seite neu lädt.
Obwohl dies nur in wenigen Fällen der Fall zu sein scheint, haben wir herausgefunden, dass es besser ist, sicherzustellen, dass dies zu 100% funktioniert, indem Sie eine manuelle Überprüfung hinzufügen, ob die Seite wirklich neu geladen wurde.
Hier ist der Code, den ich dafür in unserer Basisseitenobjektklasse geschrieben habe:
Einige Notizen:
Wiederum wird in den allermeisten Fällen die do / while-Schleife ein einziges Mal ausgeführt, da der Code jenseits von navig (). Refresh () erst ausgeführt wird, wenn der Browser die Seite tatsächlich vollständig neu geladen hat, aber wir haben Fälle gesehen, in denen Es dauert tatsächlich Sekunden, um diese Schleife zu durchlaufen, da navig (). refresh () nicht blockiert wurde, bis der Browser das Laden beendet hat.
quelle
Sie können es auch versuchen
quelle
Es gibt auch einen Fall, in dem Sie nur einen bestimmten Iframe auf der Seite und nicht die gesamte Seite aktualisieren möchten.
Sie tun wie folgt:
quelle
In PHP:
quelle
Eine andere Möglichkeit, die aktuelle Seite mit Selen in Java zu aktualisieren.
Wenn Sie dies verwenden, wird die aktuelle Seite aktualisiert, indem Sie auf die Adressleiste des Browsers klicken und die Eingabetaste drücken.
quelle
In R können Sie die Aktualisierungsmethode verwenden. Zunächst navigieren wir jedoch mithilfe der Navigationsmethode zu einer URL:
quelle