MaxRetryError Selenium



我尝试编写一个简单的脚本,该脚本每小时检查一次网站,并在发现可用时给我发一封电子邮件。

我认为每小时都这样做不会引发任何问题,但我得到了以下错误:

MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=60745): Max retries exceeded with url: /session/900f45d6c8c800f2a8ebcf43daa05b69/url (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fa42c261c10>: Failed to establish a new connection: [Errno 61] Connection refused'))

这是我的代码:

import schedule
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from notification import *
#script i have to send an email (works fine)
PATH = "mypath"
# i have the path where there drivers are
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=1920x1080")
# to not open the browser
driver = webdriver.Chrome(options=chrome_options, executable_path=PATH)
def get_stock():
driver.get("website i'm trying to check")
# access the website
search = driver.find_element_by_name("add")
# add is the name of the button i wanna check
result = search.is_enabled()
print(result)
driver.quit()

schedule.every().hour.do(get_stock)
# run the get_stock function every hour
c = 0
# initialize the loop
while c == 0:
schedule.run_pending()
c = get_stock()
# set the seed equal to the get_stock so that it stops once it becomes True
time.sleep(1)
print(get_stock())

email("Now there's a stock.")
#using my notification script to send the email

我是一个初学者,所以任何帮助都将不胜感激。

此错误消息。。。

MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=60745): Max retries exceeded with url: /session/900f45d6c8c800f2a8ebcf43daa05b69/url (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fa42c261c10>: Failed to establish a new connection: [Errno 61] Connection refused'))

意味着ChromeDriver无法启动/生成/与浏览上下文通信,即Chrome浏览器会话。


根本原因

此错误的根本原因可能是以下原因之一:

  • 如果您手动关闭浏览上下文,而驱动程序已经启动了一个或多个元素的查找,则可能会出现此错误
  • 如果您已经调用了driver.close()driver.quit(),就调用了任何WebDriver方法
  • 还有一种可能性是,您试图访问的应用程序正在限制来自您的系统/机器/ip地址/网络的请求
  • 该应用程序已将Selenium驱动的ChromeDriver启动的谷歌chrome浏览上下文识别为机器人程序,并拒绝任何访问

解决方案

确保:

  • 总是调用tearDown(){}方法中的driver.quit()来关闭&优雅地销毁WebDriverWeb客户端实例
  • 诱导WebDriverWait将快速移动的WebDriver与浏览上下文同步
  • Selenium已升级到当前发布的3.141.59版本
  • ChromeDriver更新到当前ChromeDriver v84.0级别
  • Chrome更新到当前Chrome 84.0版本。(根据ChromeDriver v84.0发布说明(
  • 如果您的基本Web客户端版本太旧,请将其卸载并安装最新的GA和发布的Web客户端版本
  • 通过IDE清理您的项目工作区,并仅使用所需的依赖项重建项目

参考

您可以在中找到一些相关的详细讨论

  • 最大重试次数错误:HTTPConnectionPool:超过最大重试次数(由ProtocolError引起("连接中止",错误(111,"连接被拒绝"((
  • urllib3.exceptions.MaxRetryError:HTTPConnectionPool(主机="1270.0.1",端口=49951(:Selenium和Python的url超过了最大重试次数

您只需要将此行移动到get_stock((函数的开头

driver = webdriver.Chrome(options=chrome_options, executable_path=PATH)

可能为时已晚,但可能会派上用场

相关内容

  • 没有找到相关文章

最新更新