2017-04-05 77 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