2017-04-05 71 views
0

我正在運行的腳本不會從運行中返回運行的一致數據。我相信在遍歷頁面時,它並不是等待所有頁面全部加載Javascript和AJAX。在試圖解決這個問題,我添加以下明確的等待,但它返回以下錯誤:Python selenium webdriver顯式等待連接錯誤

ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

browser = webdriver.Chrome() 
url = 'http://www.website.com' 
browser.get(url) 
try: 
    element = WebDriverWait(browser, 10).until(EC.presence_of_all_elements_located((By.ID, "results-main"))) 
finally: 
    browser.quit() 

print (browser.page_source) 

隱含的等待將沒有錯誤運行,但它也不會返回一致的源代碼。

+0

由於'browser.quit()'無法獲取頁面源代碼, 。請注意'finally'運算符後面的代碼塊總是**執行**。 所以你可能需要在'browser.quit()' – Andersson

回答

0

林假設你在browser.page_source 這是因爲你在做browser.quit 退出()得到這個例外 - 它是用來關閉網絡驅動程序實例或破壞網絡驅動器

你在退出之前,需要獲取頁面源代碼,方法是在try塊的末尾添加print語句,或者在打印後移動quit:

+0

之前執行'browser.page_source'這是正確的。我的理解是Quit()只在等待時間超時才被調用,但事實並非如此。 – Farmer

+1

不,終止塊是一種確保其中的代碼總是執行的方法,刪除並看看它將如何工作 –

+0

@ Farmer用'catch'替換'finally',你很可能會得到你想要的行爲。您應該花些時間閱讀關於'try-catch-finally'的文檔,以更好地理解它們的工作方式。 – JeffC