当前位置: 首页 > 知识库问答 >
问题:

WebDriverException:未知错误:尝试启动Chrome浏览器时,DevToolsActivePort文件不存在

柴宏浚
2023-03-14
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)
    null

p.s在Firefox中一切正常

共有1个答案

杨曜瑞
2023-03-14

启动期间Chrome崩溃的一个常见原因是在Linux上以root用户(管理员)的身份运行Chrome。虽然可以通过在创建WebDriver会话时传递--no-sandbox标志来解决此问题,但这种配置是不支持的,也是非常不鼓励的。您需要将环境配置为以常规用户身份运行Chrome。

此错误消息...

org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist 

...暗示ChromeDriver无法启动/生成新的WebBrowser(即Chrome Browser会话)。

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized"); // open Browser in maximized mode
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("--no-sandbox"); // Bypass OS security model
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");

根据base_switches.ccdisable-dev-shm-usage似乎仅在Linux操作系统上有效:

#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
// The /dev/shm partition is too small in certain VM environments, causing
// Chrome to fail or crash (see http://crbug.com/715363). Use this flag to
// work-around this issue (a temporary directory will always be used to create
// anonymous shared memory files).
const char kDisableDevShmUsage[] = "disable-dev-shm-usage";
#endif

在讨论中,添加一个使用/tmp而不是/dev/shm的选项,David提到:

我认为这将取决于/dev/shm和/tmp的安装方式。如果它们都装入tmpfs,我假设它们不会有任何区别。如果由于某种原因/tmp没有映射为tmpfs(我认为默认情况下由systemd映射为tmpfs),chrome共享内存管理在创建匿名共享文件时总是将文件映射到内存中,因此即使在这种情况下也不会有太大区别。我想你可以强制进行遥测测试,并启用标志,看看情况如何。

您可以在以下文件中找到一些详细的讨论:

  • 未知错误:在Ubuntu上执行Selenium UI测试用例时,DevToolsActivePort文件不存在错误
  • 测试立即失败,出现未知错误:通过Systemd运行Selenium网格时,DevToolsActivePort文件不存在

这里是沙盒故事的链接。

 类似资料:
  • 问题内容: 我正在尝试使用URL启动chrome,浏览器启动,此后它什么也不做。 1分钟后,我看到以下错误: 我的配置: Chrome:66 Chrome浏览器:2.39.56 PS 在Firefox中一切正常 问题答案: 更新: 我可以解决问题,现在可以使用所需的网址访问Chrome。 尝试提供的解决方案的结果: 我尝试了上面提供的所有设置,但无法解决问题 有关问题的说明: 根据我的观察,当ch

  • 使用Selenium的Python脚本无法创建Chrome的实例,尽管版本是正确的并且安装了UI。 我已经在这里看了类似的线程,似乎没有一个解决了这个问题。代码在Windows上工作 - 一旦我尝试在Linux上执行它,它就不再有效。我的预期目标是让它在视觉上打开Chrome,因此我不是在寻找涉及虚拟显示器的解决方案。 我有谷歌浏览器75.0.3770.100安装我也有ChromeDriver 7

  • iam运行一个硒脚本,并继续得到上述错误。这是代码: 所以代码中的注释行对我不起作用。当我添加这一行时,我总是得到这个错误: 并且代码在没有添加上述代码行的情况下也能正常工作。 以下是关于该错误的更多信息: 系统信息: 视窗 7 SP-1 64 位 Chrome信息:版本71.0.3578.98(官方版本)(64位) Java 版本: 10.0.1 请帮我做这件事。

  • 问题内容: 我正在尝试开始使用Selenium,并下载了chrome驱动程序并放入了我的类路径中。我只是想立即获取标题,以查看是否可以使用它。当前代码如下: 我希望我的输出类似于“ Google”,但是却收到此错误: 我真的无法弄清楚该错误试图告诉我什么。是否是因为我在完全加载网站之前要求标题?我需要在之前添加某种命令吗? 问题答案: 此错误消息… …暗示 ChromeDriver 无法启动/产生

  • 我试图将与一起使用,我为chromedriver到/usr/local/bin的路径创建了一个符号链接,但当我运行 我的错误是 它还会生成一个核心。******,一个包含五个随机数的核心文件点,大小超过200MB。 版本: 有谁能帮我找出问题出在哪里吗?

  • 当我使用机器人框架运行一个chrome浏览器开放测试用例时,我观察到以下错误。 WebDriverException:消息:未知错误:Chrome启动失败:异常退出 (未知错误:DevToolsActivePort文件不存在) (从chrome location/usr/bin/google-Chrome启动的进程不再运行,因此ChromeDriver假设chrome已经崩溃。)(驱动程序信息:C