最近,我更换了计算机,从那时起,我无法使用硒启动铬。我也尝试过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)


#1 楼

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

https://sites.google.com/a/chromium.org/chromedriver/downloads

编辑:

请尝试:

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/')


评论


我已经从该位置下载了最新的chromedriver。

– SOeh
18-10-30在22:40

确保--no-sandbox选项是第一个(与本示例不同,第一个选项是--headless。我一直收到该错误,直到将--no-sandbox移到列表的顶部,然后添加作为第一选择。

–parsecer
19-09-24在22:05

注意:从selenium.webdriver.chrome.options导入选项

–雅各布·斯特恩(Jacob Stern)
19-10-1在17:54

据我所知--no-sandbox chrome options参数就足够了

–马克西姆·科斯特罗姆(Maksim Kostromin)
3月5日下午6:53

您需要匹配与铬一起使用的chromedriver版本

–tarvinder91
10月2日,17:59

#2 楼

此错误消息...

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



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/')



Java解决方案:

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/");




评论


设置chrome二进制文件有效。给你最好的答案。同样,完全删除Chrome / Chromedriver / Pycharm,然后重新安装所有内容也可以解决问题,因此现在我没有设置的Chrome二进制文件。

– SOeh
18-10-31在18:02

#3 楼

我遇到了在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,但缺少了--no-sandbox,这就是为什么它无法生成铬的原因。
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
  chromeOptions: { args: %w(headless --no-sandbox disable-gpu window-size=1920,1080) }
)


评论


解决此问题的另一种方法是不以root用户身份运行该进程(在容器内)。无论如何,从安全角度来看,这是更好的选择。 :)

– XtraSimplicity
19-10-14在23:27



#4 楼

希望这对某人有帮助。这适用于我在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()


#5 楼

我遇到了类似的问题,并发现选项参数必须按一定顺序排列。我只知道在Ubuntu 18机器上运行此功能所需的两个参数。此示例代码对我有效:

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/')


评论


是不是,使用--no--sandbox选项是否存在安全问题?

–马哈克·马利克(Mahak Malik)
2月14日18:26

#6 楼

假设您已经下载了chromeDriver,则当已经打开多个chrome标签时也会发生此错误。

如果关闭所有标签并再次运行,该错误应该会清除。

#7 楼

在我的情况下,错误是由www-data用户引起的,而与开发中的普通用户无关。该错误是为此用户初始化x显示的问题。因此,在不打开浏览器窗口的情况下运行我的硒测试,该问题已解决:

opts.set_headless(True)


#8 楼

对于RobotFramework

我解决了!使用--no-sandbox

${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


评论


我也面临着同样的问题,但对您的上述评论感到有些困惑。你能帮忙吗?我当前的代码是SeleniumLibrary.Open浏览器,关于:空白$ {BROWSER} ..so我用您的语句替换此行?

–马哈克·马利克(Mahak Malik)
2月11日14:39



#9 楼

一个没有其他人说过但对我有用的简单解决方案,在没有sudo或不是root用户的情况下无法运行。

#10 楼

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

无法解决该问题,在Python中,我将driver = webdriver.Chrome()包裹在try..except块中的setUp()中在我的所有测试都源自的测试用例类中。如果遇到Webdriver异常,它将等待十秒钟,然后重试。

它解决了我遇到的问题;并不优雅,但是可以。

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)


#11 楼

确保chromedrivergoogle-chrome可执行文件都具有执行权限
sudo chmod -x "/usr/bin/chromedriver"

sudo chmod -x "/usr/bin/google-chrome"


#12 楼

我在linux环境中遇到此错误。如果不使用无头,那么您将需要
from sys import platform
    if platform != 'win32':
        from pyvirtualdisplay import Display
        display = Display(visible=0, size=(800, 600))
        display.start()


#13 楼

我有同样的问题。我在带有“ sudo geany”的终端上运行它,您应该在没有“ sudo”的情况下运行它,只需在终端“ geany”上键入,这对我来说就解决了。

#14 楼

我遇到了同样的问题,但我通过将chromedriver移到此路径来解决了这个问题
'/ opt / google / chrome /'
,此代码正确运行了
from selenium.webdriver import Chrome
driver = Chrome('/opt/google/chrome/chromedrive')
driver.get('https://google.com')