【问题标题】:Selenium starts up a Chrome session but crashes right afterSelenium 启动 Chrome 会话,但之后立即崩溃
【发布时间】:2020-06-23 18:11:55
【问题描述】:

我在尝试打开会话时收到这些错误之一。

selenium.common.exceptions.SessionNotCreatedException:消息:会话未创建 从 chrome 无法访问 (会话信息:chrome=80.0.3987.132)

selenium.common.exceptions.SessionNotCreatedException:消息:会话未创建 从断开连接:无法接收来自渲染器的消息 (会话信息:chrome=80.0.3987.132)

ChromeDriver = 80.0.3987.106

我用谷歌搜索了这些错误,但没有一个解决方案有帮助,这是我当前的代码:(其中一个解决方案建议添加 Chrome 选项)

from selenium import webdriver

class YoutubeBot():
    def __init__(self):
        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument('--no-sandbox')
        self.driver = webdriver.Chrome('/usr/local/bin/chromedriver', chrome_options=chrome_options)

编辑:我现在发现这个问题是通过使用无头来解决的,我仍然想在编写代码时测试我的代码,也许还有其他解决方案吗? (我在 Arch Linux 上使用 Xfce4 DE)

【问题讨论】:

  • 你是在没有桌面的电脑上运行这个吗?您可能需要在无头模式下运行 Chrome。
  • @GregBurghardt 我有一个桌面环境,Chrome 窗口会弹出一两秒,但没有显示任何用处,然后只是因为其中一个错误而崩溃。
  • @GregBurghardt 更新:看起来它在无头模式下不会崩溃,这很奇怪。
  • 这肯定很奇怪。

标签: python-3.x selenium google-chrome selenium-webdriver selenium-chromedriver


【解决方案1】:

此错误消息...

selenium.common.exceptions.SessionNotCreatedException: Message: session not created from disconnected: Unable to receive message from renderer (Session info: chrome=80.0.3987.132)

...暗示 ChromeDriver 无法启动/生成新的 Chrome 浏览器 会话。


你需要考虑几件事:

  • ChromeDriver的绝对位置必须通过Key/Value对传递,如下:

    driver = webdriver.Chrome(executable_path='/Users/qa/Documents/Python/chromedriver')
    
  • 在初始化会话时,您需要使用 options 参数而不是 chrome_options

  • 如此有效,您的代码块将是:

    from selenium import webdriver
    
    class YoutubeBot():
        def __init__(self):
            chrome_options = webdriver.ChromeOptions()
            chrome_options.add_argument('--no-sandbox')
            self.driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', options=chrome_options)
    

【讨论】:

  • 我有默认路径,所以无论哪种方式都没有关系,但是,我尝试了您的解决方案,我得到了同样的错误。
【解决方案2】:

解决方案很简单,sudo 文件。 我觉得很愚蠢,应该早点检查一下,可能应该考虑到这一点。 运行时,我所要做的就是sudo python -i main.py,Chrome 就神奇地启动了,没有出现错误。

【讨论】:

  • 您的用户是否拥有 Chrome 和 ChromeDriver 的读取和执行权限?通常sudo 就像用大锤敲打图钉。我会担心以root 的身份运行 Chrome 和 ChromeDriver... 除非我是黑客。然后我会彻底享受它。 :-)
  • @GregBurghardt 我在 Chrome 和 ChromeDriver 上都有读、写、执行权限。也许我对 Selenium 包或 Python 没有这些权限?
猜你喜欢
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多