我试图用一个URL启动chrome浏览器,浏览器启动后,它什么也不做。

1分钟后我看到如下错误:

Unable to open browser with url: 'https://www.google.com' (Root cause: org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
  (Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.15063 x86_64) (WARNING: The server did not provide any stacktrace information)

我的配置:

Chrome浏览器:66 ChromeBrowser: 2.39.56

又及,在Firefox中一切都很好


当前回答

我使用铬,但我已经创建了一个shell脚本称为铬,只是为了便于我从dmenu打开浏览器。

#!/bin/bash

/usr/bin/chromium

Chrome驱动程序在PATH中寻找Chrome并执行。结果我得到了同样的错误。

org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited normally.
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /home/s1n7ax/.local/share/s1n7ax/bin/chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 's1n7ax', ip: '127.0.1.16', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.70-1-lts', java.version: '11.0.8'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x56030c96dd99 <unknown>

我只是删除了shell脚本,并添加了一个到chromium的软链接。现在一切正常。

其他回答

在我的例子中,我在Kubernetes环境中不能使用默认的TMPDIR,因为它会用垃圾填满临时目录。

所以我用这个来使用不同的tmpdir:

driver = new ChromeDriver(new ChromeDriverService.Builder()
                    .withEnvironment(ImmutableMap.of("TMPDIR", customTmpPath))
                    .build(), options);

但现在我把所有东西都升级到最新版本,这似乎不再管用了。我需要找到一种新的方法来做这件事。

对我来说,问题在于systemD服务文件。我将shell环境传递为venv

Environment="proejct/venv/bin"

当我添加/bin:/usr/bin到Environment:

Environment="proejct/venv/bin:/usr/bin:/bin"

最后,它成功了。

我知道这是一个老问题,它已经有很多答案。然而,我遇到了这个问题,碰到了这个线程,提出的解决方案都没有帮助。在花了几天(!)之后,我终于找到了一个解决方案:

我的问题是,我在一台装有M1芯片的MacBook上使用了硒/独立铬图像。在切换到seleniarm/standalone-chromium之后,一切终于开始工作了。

我在python中遇到了同样的问题。以上这些都有帮助。这是我在python中使用的

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('/path/to/your_chrome_driver_dir/chromedriver',chrome_options=chrome_options)

核心的答案 正确的解决方案:不使用root用户运行Chrome二进制 更多细节请参考另一个帖子的回答:未知错误:DevToolsActivePort文件不存在