gpt4 book ai didi

python - Python/Selenium/Chrome 针对不同错误的冲突解决方案

转载 作者:行者123 更新时间:2023-12-04 03:34:43 24 4
gpt4 key购买 nike

一周左右的时间里,我一直收到一系列讨厌的 Selenium/Chrome 错误,之前一切正常,然后突然就不行了。我的 Chromedriver (89.0.4389.23) 版本适合我的 Google Chrome (89.0.4389.114) per Google Chrome official docs

当前,当我运行 driver = webdriver.Chrome(options=options) 时出现以下错误(至少在我的生产服务器上,我没有为相同的代码 repo 得到它在我的本地机器上):

selenium.common.exceptions.SessionNotCreatedException: Message: session not created
from disconnected: unable to connect to renderer
(Session info: headless chrome=89.0.4389.114)

令人沮丧的是,唯一的solution除了“确保你的 chrome 和 chromedriver 匹配”之外,我发现这个错误是从我的网络驱动程序 中删除 options.add_argument("--remote-debugging-port=9222")选项。我也有那行代码,删除它似乎暂时解决了我的问题,但我的问题是那行代码出现在我的代码库中的以下注释下:

    # adding arg below fixed "DevToolsActivePort file doesn't exist."
# ht https://github.com/heroku/heroku-buildpack-google-chrome/issues/46
options.add_argument("--remote-debugging-port=9222")

所以我现在已经达到了一个完美的循环,我的 Python Selenium 代码可靠地工作直到它可靠地中断,并出现两个不同的 Selenium 错误(“ session 不是从断开连接创建的:无法连接到渲染器”或“DevToolsActivePort 文件没有不存在。”),其中一种解决方案是添加特定代码行,而另一种解决方案是将其删除。

下面是我当前的 launch_webdriver 函数,其中的注释反射(reflect)了我一直试图导航的各种 transient Chrome/Selenium 错误:

from selenium import webdriver
import chromedriver_binary
from selenium.webdriver.chrome.options import Options

def launch_browser(headless=False): # :, driverpath="./spinocchio/chromedriver"):
options = Options()

# if any other driver `options` are added, they must be added BELOW no-sandbox
# per user parsecer's comment at https://stackoverflow.com/a/53073789/1870832
# and my own excruciating experience.
options.add_argument("--no-sandbox")

# you may think the two lines below can be replaced with just options.headless=headless
# please don't.
if headless:
options.add_argument("headless")

# adding arg below fixed "DevToolsActivePort file doesn't exist."
# ht https://github.com/heroku/heroku-buildpack-google-chrome/issues/46
options.add_argument("--remote-debugging-port=9222")
driver = webdriver.Chrome(options=options)
return driver

我怎样才能得到更可靠/更稳健的东西?

最佳答案

概述

  1. 普遍问题 - 根据 @ss7777
  2. 虽然这个/相关的许多潜在原因

我担心蓝天和“银弹”解决方案,但是,这里有一些常见的原因和潜在的解决/注意事项等。


修复/解决

(附有“共性”的主题观点 | 频率)

  1. 驱动程序:ChromeDriver 版本/文件位置 (~50%) - 不正确版本 + 确保位置到可执行文件的正确位置

“当您使用的二进制文件版本不兼容时,此问题非常明显。”(改编自 this 来源,包含有用的历史版本 v/二进制文件摘要)

  1. Chrome/驱动程序仍然“活跃”5-20%——尽管关闭,进程树元素可以保持“活跃”或“旋转”一段时间——你在 PC 重启后注意到这一点吗(here)?

(之前已经遭受甚至证明了这一点 - 例如并行运行代码,或者只是通过 .bat 与 PyCharm 控制台同时执行)。

  1. 更新:插件/其他不兼容 (~5-15%) - 注意你使用的是 headless - 它与头一起工作吗?)
  2. 系统:清理您的系统/还原点或最差的部分 (~10-20%)。 (还原点对我有用)
  3. 其他:产生单独的线程(~5% - 参见 here )/替代端口(根据要求/可行)

解决方法

  • Chrome 依赖项(例如,参见 here - 尽管可能是转移注意力...)
  • 执行方式(通过编辑器主程序,通过编辑器托管的 CMD 界面(例如 PyCharm 控制台),或通过 .bat 文件(如前所述),Standalone Selenium here
  • 配置(技术/高级 - 例如 here)高级用户)

未解决(尽管有 promise )

此类问题仍未解决/贡献有限的几种情况:

(尽管这里的第 2 点指出了上面第 2 项中的补救措施)。


极端的解决方案:

  • 看到了深入的调查和许多反复的问答——最终的结论是完全重新安装(Chrome/python、编辑器)等。

链接/相关

关于python - Python/Selenium/Chrome 针对不同错误的冲突解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67143883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com