这个错误信息.。org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
.意味着ChromeDriver无法启动/产生新的韦布E.Chrome浏览器会议。
您的代码测试和所有二进制文件的版本控制信息都会给我们一些提示,说明出了什么问题。
然而,如添加-禁用-dev-shm-使用默认启动标志似乎增加了争论--disable-dev-shm-usage将暂时解决问题。
如果你想启动/跨越一个新的Chrome浏览器会话可以使用以下解决方案: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");
禁用-开发-SHM-使用
按基开关 disable-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我认为这将取决于/dev/shm和/tmp是如何安装的。如果它们都以tmpfs的形式挂载,我想不会有什么区别。如果由于某种原因/tmp没有映射为tmpfs(我认为默认情况下系统将映射为tmpfs),在创建匿名共享文件时,Chrome共享内存管理总是将文件映射到内存中,因此即使在这种情况下也不会有太大差别。我想你可以在启用旗子的情况下强制进行遥测测试,看看结果如何。
至于为什么不默认使用,它是由共享内存团队推后的,我想它在默认情况下应该使用/dev/shm来实现共享内存。
最终,所有这一切都应该转向使用memfd_create,但我认为这不会很快发生,因为这将需要对Chrome内存管理进行大量重构。