2016-12-11 4 views
2

Ich habe eine Seite mit selbst-erfrischenden Inhalten (via WebSocket) wie diese one. Während der Inhalt sich ständig ändert, kann mein firefox webdriver nur den ursprünglichen Inhalt sehen. Ich konnte die frische durch Auffrischen der Seite erhalten, indemSelenium WebDriver Python HTML neu laden, ohne die Seite zu aktualisieren

driver.navigate.refresh() 

aber dies führt zu unnötigen Datenverkehr außer im Firefox-Fenster der neue Inhalt bereits angezeigt.

Meine Frage ist: Kann ich den frischen HTML bekommen, wie ich im Firefox-Fenster beobachten kann, ohne die ganze Seite neu zu laden?

+0

Ich denke nicht, Sie so etwas mit Selen tun könnte. Überprüfen Sie diese Alternative. http://jmeter.apache.org – Juggernaut

+0

@AminEtesamian Danke, sieht gut aus, aber ich muss Python verwenden. – user92020

Antwort

0

Wenn sich der Seiteninhalt über einen bestimmten Zeitraum ändert, können Sie die Seitenquelle alle n Sekunden überprüfen. Eine einfache Möglichkeit dazu wäre import time dann verwenden Sie time.sleep(5), um 5 Sekunden zu warten, dann erhalten Sie die Seitenquelle. Sie können es auch in eine Schleife einfügen. Wenn sich der Seiteninhalt innerhalb der folgenden 5 Sekunden geändert hat, kann Selen den Inhalt der aktualisierten Seite bei der Überprüfung abrufen. Ich habe das nicht getestet, aber prüfen Sie, ob es für Sie funktioniert.

BEARBEITEN: Beispielcode hinzugefügt. Vergewissern Sie sich, dass die Marionette richtig installiert und konfiguriert ist. Sie können meine Antwort hier, wenn Sie ein ubuntu Benutzer sind (https://stackoverflow.com/a/39536091/6284629)

# this code would print the source of a page every second 
from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
import time 

# side note, how to get marionette working for firefox: 
# https://stackoverflow.com/a/39536091/6284629 

capabilities = DesiredCapabilities.FIREFOX 
capabilities["marionette"] = True 
browser = webdriver.Firefox(capabilities=capabilities) 

# load the page 
browser.get("http://url-to-the-site.xyz") 

while True: 
    # print the page source 
    print(browser.page_source) 
    # wait for one second before looping to print the source again 
    time.sleep(1) 
+0

Das ist genau das, was ich machen möchte. Die Sache ist, wenn ich driver.page_source rufe oder ein bestimmtes Element inspiziere, würde sich der Inhalt nicht ändern. I.e. Der Treiber speichert den ursprünglichen HTML-Code einmal und aktualisiert ihn nicht. Also ist der Punkt, wie man die aktualisierte Quelle bekommt? – user92020

+0

Sie verwenden wahrscheinlich die Variable, in der Sie die page_source gespeichert haben, weshalb sie denselben Wert aufweist. Ordnen Sie page_source nach dem Warten erneut der gleichen Variablen zu, oder rufen Sie einfach erneut browser.page_source auf, um die aktualisierte Quelle für die Seite zu erhalten. Ich habe meine Antwort bearbeitet, um ein funktionierendes Beispiel zu zeigen. –

+0

Toll, ich habe die "Marionette" -Option hinzugefügt und jetzt funktioniert es genau so wie beabsichtigt! Danke vielmals! – user92020

Verwandte Themen