我想讓硒在完全呈現後捕獲頁面源,如果我轉到頁面並立即捕獲頁面的某一部分已經呈現,如果我在30秒的睡眠中完全呈現,但我希望它更有效率。等待Python中的Selenium的XHR請求和/或控制檯消息
如果我們使用https://twitter.com/i/notifications作爲例子,你會發現在頁面加載5秒後有一個toast_poll和一個時間軸XHR請求。
我希望能夠檢測到其中一個請求,並等到一次觸發,那麼這是一個指示器,表示頁面已完全加載。
,我現在用大火console.log("Done")
所以,如果我能在PhantomJS檢測控制檯命令&火狐那麼這將是比等待XHR請求一個更好的選擇,該網站,只是等待,直到Done
出現在控制檯,然後將該是頁面已完全加載的指示符。
關於這個職位的重複標記:
這個問題是關於PhantomJS和Firefox,後Detect javascript console output with python是在一年前,給出的答覆僅適用於Chrome,我要找一個PhantomJS
和Firefox
選項,我已經認爲基於StackOverflow是不可能的,所以這就是爲什麼我的開始是爲了等待XHR請求。
我已經嘗試下面的代碼,但它不爲我工作..我得到即使該網站是扔的console.log(「完成」)
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
我零響應'無法測試與browser = webdriver.Firefox()
註釋掉,因爲我不知道如何有兩批DesiredCapabilities
集。
的可能的複製[檢測與Python JavaScript控制檯輸出(http://stackoverflow.com/questions/28678872/detect-javascript-console-output-with-python) – salomonderossi
@salomonderossi這不是關於'PhantomJS'和'Firefox',那篇文章只關於Chrome,我正在尋找一個PhantomJS和Firefox選項,我已經基於StackOverflow的想法是不可能的,所以這就是爲什麼我的文章開始是關於等待XHR請求的。 – Ryflex
imho你也可以使用Firefox,Safari,IE或無頭PhantomJS瀏覽器 – salomonderossi