Python Selenium:WebDriverException:Chrome启动失败:崩溃,因为google Chrome不再运行,所以ChromeDriver假设Chrome已经崩溃

Python Selenium:WebDriverException:Chrome启动失败:崩溃,因为google Chrome不再运行,所以ChromeDriver假设Chrome已经崩溃,python,selenium,google-chrome,selenium-webdriver,selenium-chromedriver,Python,Selenium,Google Chrome,Selenium Webdriver,Selenium Chromedriver,最近我换了电脑,从那以后我就不能用selenium启动chrome了。我也尝试过Firefox,但浏览器实例无法启动 from selenium import webdriver d = webdriver.Chrome('/home/PycharmProjects/chromedriver') d.get('https://www.google.nl/') 我得到以下错误: selenium.common.exceptions.WebDriverException: Message: u

最近我换了电脑,从那以后我就不能用selenium启动chrome了。我也尝试过Firefox,但浏览器实例无法启动

from selenium import webdriver

d = webdriver.Chrome('/home/PycharmProjects/chromedriver')

d.get('https://www.google.nl/')
我得到以下错误:

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 /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.43.600233, platform=Linux 4.15.0-38-generic x86_64)
我安装了最新的chrome版本和chromedriver

编辑: 在尝试@b0sss解决方案后,我得到以下错误

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
  (chrome not reachable)
  (The process started from chrome location /opt/google/chrome/google-chrome is no longer running, so chromedriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.43.600233 (523efee95e3d68b8719b3a1c83051aa63aa6b10d),platform=Linux 4.15.0-38-generic x86_64)

请尝试在此处下载并使用此最新的chrome驱动程序版本

编辑:

试试这个:

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

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
d = webdriver.Chrome('/home/PycharmProjects/chromedriver',chrome_options=chrome_options)
d.get('https://www.google.nl/')

请尝试在此处下载并使用此最新的chrome驱动程序版本

编辑:

试试这个:

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

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
d = webdriver.Chrome('/home/PycharmProjects/chromedriver',chrome_options=chrome_options)
d.get('https://www.google.nl/')
此错误消息

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 /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
…表示ChromeDriver无法启动/生成新的WebBrowser,即Chrome浏览器会话

您的主要问题是Chrome浏览器未安装在系统中的默认位置

服务器即ChromeDriver希望您在每个系统的默认位置安装Chrome,如下图所示:

1对于Linux系统,ChromeDriver希望
/usr/bin/google chrome
是实际chrome二进制文件的符号链接


解决方案 如果在非标准位置使用Chrome可执行文件,则必须按如下方式覆盖Chrome二进制位置:

  • Python解决方案:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.binary_location = "C:\\path\\to\\chrome.exe"    #chrome binary location specified here
    options.add_argument("--start-maximized") #open Browser in maximized mode
    options.add_argument("--no-sandbox") #bypass OS security model
    options.add_argument("--disable-dev-shm-usage") #overcome limited resource problems
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe')
    driver.get('http://google.com/')
    
    System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
    ChromeOptions opt = new ChromeOptions();
    opt.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");  //chrome binary location specified here
    options.addArguments("start-maximized");
    options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(opt);
    driver.get("https://www.google.com/");
    
  • Java解决方案:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.binary_location = "C:\\path\\to\\chrome.exe"    #chrome binary location specified here
    options.add_argument("--start-maximized") #open Browser in maximized mode
    options.add_argument("--no-sandbox") #bypass OS security model
    options.add_argument("--disable-dev-shm-usage") #overcome limited resource problems
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe')
    driver.get('http://google.com/')
    
    System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
    ChromeOptions opt = new ChromeOptions();
    opt.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");  //chrome binary location specified here
    options.addArguments("start-maximized");
    options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(opt);
    driver.get("https://www.google.com/");
    
此错误消息

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 /opt/google/chrome/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
…表示ChromeDriver无法启动/生成新的WebBrowser,即Chrome浏览器会话

您的主要问题是Chrome浏览器未安装在系统中的默认位置

服务器即ChromeDriver希望您在每个系统的默认位置安装Chrome,如下图所示:

1对于Linux系统,ChromeDriver希望
/usr/bin/google chrome
是实际chrome二进制文件的符号链接


解决方案 如果在非标准位置使用Chrome可执行文件,则必须按如下方式覆盖Chrome二进制位置:

  • Python解决方案:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.binary_location = "C:\\path\\to\\chrome.exe"    #chrome binary location specified here
    options.add_argument("--start-maximized") #open Browser in maximized mode
    options.add_argument("--no-sandbox") #bypass OS security model
    options.add_argument("--disable-dev-shm-usage") #overcome limited resource problems
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe')
    driver.get('http://google.com/')
    
    System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
    ChromeOptions opt = new ChromeOptions();
    opt.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");  //chrome binary location specified here
    options.addArguments("start-maximized");
    options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(opt);
    driver.get("https://www.google.com/");
    
  • Java解决方案:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.binary_location = "C:\\path\\to\\chrome.exe"    #chrome binary location specified here
    options.add_argument("--start-maximized") #open Browser in maximized mode
    options.add_argument("--no-sandbox") #bypass OS security model
    options.add_argument("--disable-dev-shm-usage") #overcome limited resource problems
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe')
    driver.get('http://google.com/')
    
    System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
    ChromeOptions opt = new ChromeOptions();
    opt.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");  //chrome binary location specified here
    options.addArguments("start-maximized");
    options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(opt);
    driver.get("https://www.google.com/");
    

假设您已经下载了chromeDriver,当已经有多个chrome选项卡打开时,也会发生此错误


如果关闭所有选项卡并再次运行,则错误应清除

假设您已经下载了chromeDriver,当已经有多个chrome选项卡打开时,也会发生此错误


如果关闭所有选项卡并再次运行,则错误应清除

我在docker容器(在构建环境中)上运行时遇到了确切的问题。在ssh进入容器后,我尝试手动运行测试,但仍然遇到了问题

(unknown error: DevToolsActivePort file doesn't exist)
     (The process started from chrome location /usr/bin/google-chrome-stable is 
      no longer running, so ChromeDriver is assuming that Chrome has crashed.)
当我尝试在本地运行chrome
/usr/bin/google chrome stable
时,出现错误消息

Running as root without --no-sandbox is not supported
我检查了我的ChromeOptions,发现它丢失了
——没有沙盒,这就是它无法生成chrome的原因

capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
  chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)

我在docker容器(在构建环境中)上运行时遇到了确切的问题。在ssh进入容器后,我尝试手动运行测试,但仍然遇到了问题

(unknown error: DevToolsActivePort file doesn't exist)
     (The process started from chrome location /usr/bin/google-chrome-stable is 
      no longer running, so ChromeDriver is assuming that Chrome has crashed.)
当我尝试在本地运行chrome
/usr/bin/google chrome stable
时,出现错误消息

Running as root without --no-sandbox is not supported
我检查了我的ChromeOptions,发现它丢失了
——没有沙盒,这就是它无法生成chrome的原因

capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
  chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)

在我的例子中,错误发生在www数据用户身上,而不是开发中的普通用户身上。该错误是为该用户初始化x显示时出现的问题。因此,在不打开浏览器窗口的情况下运行我的selenium测试就解决了问题,headless:

opts.set_headless(True)

在我的例子中,错误发生在www数据用户身上,而不是开发中的普通用户身上。该错误是为该用户初始化x显示时出现的问题。因此,在不打开浏览器窗口的情况下运行我的selenium测试就解决了问题,headless:

opts.set_headless(True)

希望这对别人有帮助。这在Ubuntu 18.10上对我很有效

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver', options=chrome_options)
driver.get('http://www.google.com')
print('test')
driver.close()

希望这对别人有帮助。这在Ubuntu 18.10上对我很有效

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver', options=chrome_options)
driver.get('http://www.google.com')
print('test')
driver.close()

我也遇到了类似的问题,并发现选项参数必须按特定顺序排列。我只知道在我的Ubuntu18机器上运行这个程序需要两个参数。此示例代码在我这方面起作用:

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

options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

d = webdriver.Chrome(executable_path=r'/home/PycharmProjects/chromedriver', chrome_options=options)
d.get('https://www.google.nl/')

我也遇到了类似的问题,并发现选项参数必须按特定顺序排列。我只知道在我的Ubuntu18机器上运行这个程序需要两个参数。此示例代码在我这方面起作用:

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

options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

d = webdriver.Chrome(executable_path=r'/home/PycharmProjects/chromedriver', chrome_options=options)
d.get('https://www.google.nl/')

在过去六个月的测试运行期间,这个错误一直是随机发生的(Chrome 76和Chromedriver 76仍然会发生),并且仅在Linux上发生。平均每几百个测试中就有一个会失败,然后下一个测试就会正常运行

无法解决此问题,在Python中,我将
driver=webdriver.Chrome()
包装在一个try中。除了测试用例类中的setUp()中的block之外,我的所有测试都是从中派生出来的。如果遇到Webdriver异常,它将等待10秒钟,然后重试

它解决了我的问题;不优雅,但它的工作

from selenium import webdriver
from selenium.common.exceptions import WebDriverException

try:
    self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
except WebDriverException as e:
    print("\nChrome crashed on launch:")
    print(e)
    print("Trying again in 10 seconds..")
    sleep(10)
    self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
    print("Success!\n")
except Exception as e:
    raise Exception(e)

在过去六个月的测试运行期间,这个错误一直是随机发生的(Chrome 76和Chromedriver 76仍然会发生),并且仅在Linux上发生。平均每几百个测试中就有一个会失败,然后下一个测试就会正常运行

无法解决此问题,在Python中,我将
driver=webdriver.Chrome()
包装在一个try中。除了测试用例类中的setUp()中的block之外,我的所有测试都是从中派生出来的。如果遇到Webdriver异常,它将等待10秒钟,然后重试

它解决了我的问题;不优雅,但它的工作

from selenium import webdriver
from selenium.common.exceptions import WebDriverException

try:
    self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
except WebDriverException as e:
    print("\nChrome crashed on launch:")
    print(e)
    print("Trying again in 10 seconds..")
    sleep(10)
    self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
    print("Success!\n")
except Exception as e:
    raise Exception(e)
机器人框架

我解决了!使用
--无沙箱

${chrome_options}=  Evaluate  sys.modules['selenium.webdriver'].ChromeOptions()  sys, selenium.webdriver
Call Method    ${chrome_options}    add_argument    test-type
Call Method    ${chrome_options}    add_argument    --disable-extensions
Call Method    ${chrome_options}    add_argument    --headless
Call Method    ${chrome_options}    add_argument    --disable-gpu
Call Method    ${chrome_options}    add_argument    --no-sandbox
Create Webdriver    Chrome    chrome_options=${chrome_options}
而不是

Open Browser    about:blank    headlesschrome
Open Browser    about:blank    chrome
机器人框架

我解决了!使用
--无沙箱

${chrome_options}=  Evaluate  sys.modules['selenium.webdriver'].ChromeOptions()  sys, selenium.webdriver
Call Method    ${chrome_options}    add_argument    test-type
Call Method    ${chrome_options}    add_argument    --disable-extensions
Call Method    ${chrome_options}    add_argument    --headless
Call Method    ${chrome_options}    add_argument    --disable-gpu
Call Method    ${chrome_options}    add_argument    --no-sandbox
Create Webdriver    Chrome    chrome_options=${chrome_options}
而不是

Open Browser    about:blank    headlesschrome
Open Browser    about:blank    chrome

我也有同样的问题。我在终端上运行它