一周左右的时间里,我遇到了一系列令人讨厌的 Selenium/Chrome 错误,一段时间内一切正常,然后突然就不行了。我的 chromedriver(89.0.4389.23) 版本适合我的 google chrome (89.0.4389.114) per google chrome official docs
目前我在运行 driver = webdriver.Chrome(options=options)
时遇到以下错误(至少在我的生产服务器上,我在本地机器上没有为相同的代码存储库获取它):
selenium.common.exceptions.SessionNotCreatedException: Message: session not created
from disconnected: unable to connect to renderer
(Session info: headless chrome=89.0.4389.114)
令人沮丧的是,除了“确保您的 chrome 和 chromedriver 匹配”之外,我发现此错误的唯一 solution 是从我的网络驱动程序 options.add_argument("--remote-debugging-port=9222")
中删除 options
。我也有那行代码,现在删除它似乎可以解决我的问题,但是我的代码库中的以下注释下出现了我的问题:
# 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 错误(“会话未创建 从断开连接:无法连接到渲染器”或“DevToolsActivePort 文件不存在。”),其中一个解决方案是添加特定的代码行,另一个解决方案是将其删除。
以下是我当前的 launch_webdriver
函数,其中的注释反映了我一直在尝试导航的各种瞬态 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
任何有关获得更可靠/更强大的帮助的帮助将不胜感激。
答案 0 :(得分:1)
概述
蓝色天空和“银弹”解决方案我很担心,但是,这里有一些常见的原因和潜在的解决方案/注意事项等。
修复/解决
(伴随着“共同性”的主旨观点|频率)
“当您使用的二进制文件的版本不兼容时,这个问题非常明显。”(改编自 this 源,有用的历史版本摘要 v/二进制文件)
(之前已经遭受过甚至证明了这一点 - 例如并行运行代码,或者只是通过 .bat 与 PyCharm 控制台同时执行)。
解决方法
未解决(尽管有承诺)
这种 Q 仍未解决/贡献有限的几种情况:
(虽然这里的第 2 点是指上面第 2 项中的补救措施)。
极端情况:
链接/相关
答案 1 :(得分:0)
我曾经遇到过同样的错误,但在任何地方都找不到可行的解决方案。所以我将我的 chrome 版本降级到 v86.0
即使您安装了旧版本的 chrome,您也需要禁用 chrome 更新以继续使用您想要的版本。您可以在此处找到步骤:https://www.webnots.com/7-ways-to-disable-automatic-chrome-update-in-windows-and-mac/
与较低的 bowser 版本一起,我使用以下代码:
def test_setup(self):
chrome_options=Options()
chrome_options.add_argument('--start-maximized')
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])
chrome_options.add_argument("--remote-debugging-port=9222")
chrome_options.add_argument('--no-sandbox')
driver=webdriver.Chrome(executable_path="//your folder path//")
尝试一次,让我知道它是否适合您
答案 2 :(得分:0)
如果您收到此错误。
试试这个方法:
from webdriver_manager.chrome import ChromeDriverManager
options.add_argument("--restore-last-session")
options.add_argument("--disable-gaia-services")
driver = webdriver.Chrome(ChromeDriverManager().install(),options=options)
<块引用>
<块引用>
https://peter.sh/experiments/chromium-command-line-switches/