Ich versuche, Selen die Seitenquelle zu erfassen, nachdem es vollständig gerendert hat, wenn ich auf die Seite gehe und sofort nur ein bisschen von der Seite festhalte hat gerendert, wenn ich in einen Schlaf von 30 Sekunden setze es vollständig rendert, aber ich will, dass es effizienter ist.Warten auf XHR Request und/oder eine Console Nachricht für Selenium in Python
Wenn wir https://twitter.com/i/notifications als ein Beispiel verwenden, sehen Sie, dass nach 5 ~ Sekunden nach dem Laden der Seite ein Toast_Poll und eine XHR-Timeline-Anforderung vorliegt.
Ich möchte in der Lage sein, eine dieser Anfragen zu erkennen und zu warten, bis einer ausgelöst wird, dann ist das ein Indikator, dass die Seite vollständig geladen wurde.
Die Website, die ich Feuer bin mit console.log("Done")
so, wenn ich die Konsolenbefehle in PhantomJS erkennen kann & Firefox dann würde dies für eine XHR Anfrage eine noch bessere Wahl sein, als warten, nur warten, bis Done
in der Konsole angezeigt wird, und dann, dass ist der Indikator, dass die Seite vollständig geladen wurde.
das Doppelte Flagging dieses Beitrag Betreff:
Diese Frage in Bezug auf PhantomJS und Firefox ist, die Post Detect javascript console output with python ist von mehr als vor einem Jahr und die gegebene Antwort funktioniert nur auf Chrome, ich suche eine PhantomJS
und Firefox
Option, die ich denke schon basierend auf StackOverflow ist nicht möglich, so dass mein Start meiner Post wartet auf eine XHR-Anfrage.
Ich habe bereits versucht, den folgenden Code, aber es für mich nicht funktioniert .. Ich Null Antwort erhalten, auch wenn die Website eine console.log wirft ("Done")
from seleniumrequests import PhantomJS
from seleniumrequests import Firefox
from selenium import webdriver
import os
webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.User-Agent'] = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/37.0.2062.120 Chrome/37.0.2062.120 Safari/537.36'
webdriver.DesiredCapabilities.PHANTOMJS['loggingPrefs'] = { 'browser':'ALL' }
browser = PhantomJS(executable_path="phantomjs.exe", service_log_path=os.path.devnull)
browser = webdriver.Firefox()
browser.set_window_size(1400, 1000)
url = "https://website.com"
browser.get(url)
for entry in browser.get_log('browser'):
print entry
I kann nicht mit browser = webdriver.Firefox()
auskommentieren, weil ich nicht sicher bin, wie man zwei Lose DesiredCapabilities
gesetzt hat.
Mögliche Duplikat [Detect JavaScript-Konsole Ausgabe mit Python] (http://stackoverflow.com/questions/28678872/detect-javascript-console-output-with-python) – salomonderossi
@salomonderossi Nein, das ist in Bezug auf 'PhantomJS' und' Firefox', dieser Beitrag ist nur über Chrome, ich bin auf der Suche nach einer PhantomJS und Firefox-Option, die ich bereits Think basierend auf StackOverflow ist nicht möglich, deshalb ist der Beginn meines Posts das Warten auf eine XHR-Anfrage. – Ryflex
imho können Sie auch Firefox, Safari, IE oder einen kopflosen PhantomJS Browser verwenden – salomonderossi