Selenium Webdriver错误Chrome无法启动

时间:2019-01-24 10:48:54

标签: python selenium selenium-chromedriver

我正在尝试通过Selenium打开Chrome Webdriver,初始化时出现错误。我收到的错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "F:\WinPython\python-3.6.7.amd64\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "F:\WinPython\python-3.6.7.amd64\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "F:\WinPython\python-3.6.7.amd64\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "F:\WinPython\python-3.6.7.amd64\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "F:\WinPython\python-3.6.7.amd64\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location C:\Users\MyName\AppData\Local\Microsoft\AppV\Client\Integration\some-ever-changing-hash\Root\VFS\ProgramFilesX86\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.14393 x86_64)

我一直在寻找不同的解决方案。我尝试手动指定Chrome.exe的路径,添加了add_argument("--disable-dev-shm-usage")options.add_argument("--no-sandbox")之类的代码片段,以及使用单独的user-data-dir。当前代码可以在下面看到

import os
from selenium import webdriver

###auto-find chrome path
def chrome_path_auto():
    for root, dirs, files in os.walk('C:/Users'):
        for name in files:
            if name == 'chrome.exe':
                return os.path.abspath(os.path.join(root, name))

options = webdriver.ChromeOptions()
chrome_driver_binary = "H:/My Documents/PYTHON/selenium_script/chromedriver/chromedriver.exe"
options.binary_location = chrome_path_auto()
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--user-data-dir=H:\\My Documents\\PYTHON\\selenium_script\\UserDataDir")
options.add_argument("--disable-extensions")
options.add_argument("--no-sandbox")

driver = webdriver.Chrome(chrome_driver_binary, chrome_options=options)
driver.get('https://python.org')

Chrome的版本为71.0.3578.80,Chromedriver为2.45,因此应该兼容。我尝试使用较旧的版本,但随后仅得到部分错误:DevToolsActivePort文件不存在。 可能需要注意的是,我使用的远程桌面最近将操作系统从Windows 7更改为Windows10。在旧的Windows上,一种非常相似的方法(使用旧版本的Chrome和Chromedriver)正在工作。有没有人遇到类似的问题,或者可以想到替代解决方案?

如果需要其他任何信息,请告诉我,我将尝试提供此类信息。

编辑1。

通过将整个Chrome安装从原始文件夹 C:\Users\MyName\AppData\Local\Microsoft\AppV\Client\Integration\some-ever-changing-hash\Root\VFS\ProgramFilesX86\Google\Chrome\Application\chrome.exe移到共享磁盘H:\Public\Chrome\Application,然后使用binary_location,我设法解决了该问题。它可能与原始文件夹的根目录位置以及缺少管理员权限有关。

1 个答案:

答案 0 :(得分:1)

要解决DevToolsActivePort问题,请尝试添加以下参数:

options.add_argument('--remote-debugging-port=45447')

基本上,一旦端口设置为默认值0以外的其他值,则无需检查DevToolsActivePort文件,从而避免了问题。可以在以下位置找到有关DevToolsActivePort问题的更多详细信息:chromedriver_bug

根据我对该问题的经验,似乎是在将用户个人资料复制到通常位于以下位置的chromes默认文件夹之外时发生的:

  

C:\ Users \ username \ AppData \ Local \ Google \ Chrome \ User Data

希望这会有所帮助!