SessionNotCreatedException:消息:会话未从断开连接创建:无法使用 ChromeDriver 2.45 Chrome v71 连接到渲染器

问题描述 投票:0回答:7

当我使用 Python 使用 Selenium 执行此代码时:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome(executable_path=r'/Users/qa/Documents/Python/chromedriver')

发生错误:

   Traceback (most recent call last):
  File "/Users/qa/Documents/Python/try.py", line 4, in <module>
    driver = webdriver.Chrome(executable_path=r'/Users/qa/Documents/Python/chromedriver')
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created
from disconnected: unable to connect to renderer
  (Session info: chrome=71.0.3578.98)
  (Driver info: chromedriver=2.44.609545 (c2f88692e98ce7233d2df7c724465ecacfe74df5),platform=Mac OS X 10.13.6 x86_64)

有人可以帮助我吗?谢谢。

python-3.x selenium google-chrome selenium-webdriver selenium-chromedriver
7个回答
10
投票

我也遇到了类似的错误,首先得到错误消息:

selenium.common.exceptions.WebDriverException:消息:未知错误:Chrome 无法启动:正常退出。 (未知错误:DevToolsActivePort 文件不存在)

通过将

options.add_argument("--remote-debugging-port=9230")
添加到 ChromeOptions() 解决了这个问题。程序运行一次,我得到了与上面相同的错误消息:

selenium.common.exceptions.SessionNotCreatedException:消息:会话未创建 已断开连接:无法连接到渲染器 (会话信息:headless chrome=89.0.4389.114)

这里的问题是 chrome 进程没有在程序中正确关闭,因此该进程在调试端口上仍然处于活动状态。要解决此问题,请关闭活动端口

sudo kill -9 $(sudo lsof -t -i:9230)
,只需将以下行添加到代码末尾:

driver.stop_client()
driver.close()
driver.quit()

由于我在任何地方都没有找到这个答案,我希望它对某人有所帮助。


8
投票

如果您有 options.add_argument("--remote-debugging-port=9222") 将其更改为 options.add_argument("--remote-debugging-port=9230")

或者只是简单地添加 options.add_argument("--remote-debugging-port=9230") 在我的情况下修复。


4
投票

这个错误信息...

selenium.common.exceptions.SessionNotCreatedException: Message: session not created
from disconnected: unable to connect to renderer

...意味着 ChromeDriver 无法启动/生成新的 WebBrowser,即 Chrome 浏览器 会话。

你需要考虑一个事实:

  • 当您使用 Mac OS X 时,Key

    executable_path
    必须支持 Value,如下所示:

    '/Users/qa/Documents/Python/chromedriver'
    
  • 所以线路将是:

    driver = webdriver.Chrome(executable_path='/Users/qa/Documents/Python/chromedriver')
    

注意path本身是原始路径,因此您不需要添加开关

r
并将其删除。

此外,请确保您系统上的

/etc/hosts
包含以下条目:

127.0.0.1 localhost.localdomain localhost
#or
127.0.0.1 localhost loopback

2
投票

我在 Windows 10 计算机上遇到了同样的问题。要解决该问题,我必须打开任务管理器并退出所有 Python.exe 进程以及所有 Chrome.exe 进程。完成此操作后,


0
投票

我面临同样的错误并添加关闭代码解决问题,代码最终块如下所示:

    @staticmethod
    def fetch_music_download_url(music_name: str):
        chrome_driver_service = Service(ChromeDriverManager(chrome_type=ChromeType.GOOGLE).install())
        chrome_options = Options()
        chrome_options.add_argument("--headless")
        chrome_options.add_argument("--no-sandbox")
        chrome_options.add_argument("--disable-gpu")
        chrome_options.add_argument("--remote-debugging-port=9230")
        driver = webdriver.Chrome(service=chrome_driver_service, options=chrome_options)
        try:
            driver.maximize_window()
            driver.get('http://example.cn/music/?page=audioPage&type=migu&name=' + music_name)
            driver.implicitly_wait(5)
            // do some logic
        except Exception as e:
            logger.error(e)
        finally:
            // add the close logic
            driver.stop_client()
            driver.close()
            driver.quit()
            chrome_driver_service.stop()

关键是你应该在使用chrome服务后通过添加

chrome_driver_service.stop()
来关闭它。希望这段代码可以帮助其他面临同样问题的人。


0
投票

这对我有用

WINDOWS OS

from selenium import webdriver
import time
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)
driver.get(url)
time.sleep(3)
page = driver.page_source
driver.quit()
soup = BeautifulSoup(page, 'html.parser')

希望您会发现这很有用。我也用的比较全面这里.


0
投票

这是因为驱动程序没有关闭,你尝试再次运行。
尝试重新启动或更改端口 ID。
options.addArguments("--remote-debugging-port=9230")
您可以更改此端口。
谢谢

© www.soinside.com 2019 - 2024. All rights reserved.