【问题标题】:Python selenium webdriver explicit wait connection errorPython selenium webdriver显式等待连接错误
【发布时间】:2017-04-05 19:59:23
【问题描述】:

我正在运行的脚本不会从运行到运行返回一致的数据。我相信当我遍历页面时,它不会等待所有页面完全加载 Javascript 和 AJAX。为了解决这个问题,我在下面添加了显式等待,但它返回以下错误:

ConnectionRefusedError: [WinError 10061] 由于目标机器主动拒绝,无法建立连接

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)

隐式等待运行不会出错,但它也不会返回一致的源代码。

【问题讨论】:

  • 由于browser.quit(),您无法获取页面源代码。请注意,finally 运算符之后的代码块执行 always。所以你可能需要在browser.quit()之前执行browser.page_source

标签: python selenium selenium-webdriver


【解决方案1】:

我假设您在 browser.page_source 收到此异常 这是因为你在做 browser.quit Quit() - 用于关闭 Web 驱动实例或销毁 Web 驱动

您需要在退出之前获取页面源,方法是在 try 块的末尾添加 print 语句或在打印后移动退出 :)

【讨论】:

  • 这是正确的。我的理解是,只有在超过等待时间时才会调用 Quit(),但事实并非如此。
  • 不,finally 块是一种确保其中的代码始终被执行的方法,删除并查看它是如何工作的
  • @Farmer 将finally 替换为catch,您可能会得到您想要的行为。您可能应该花一些时间阅读 try-catch-finally 上的文档,以更好地了解它们的工作原理。
  • @JeffC,在Python 实际上是try-except-else-finally 构造... OP 应该用except 替换finally
  • @Andersson 啊...我不是 python 人。我应该查找它而不是假设它与 Java 和 C# 相同。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 2020-01-15
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多