代码之家  ›  专栏  ›  技术社区  ›  Venkatesh

Chrome启动失败,它崩溃了[duplicate]

  •  0
  • Venkatesh  · 技术社区  · 7 年前

    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)
    

    我的配置:

    • 镀铬:2.39.56

    附笔 在Firefox中一切正常

    0 回复  |  直到 5 年前
        1
  •  1
  •   Eric Dauenhauer    4 年前

    拇指尺

    root 用户( administrator --no-sandbox 标志创建WebDriver会话时,这种配置不受支持,并且强烈建议不要使用。您需要将您的环境配置为以普通用户的身份运行Chrome。


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

    …意味着 铬铁 控件 Chrome浏览器 会议。

    你的代码测试和所有二进制文件的版本信息都会给我们一些关于出错的提示。

    但是根据 Add --disable-dev-shm-usage to default launch flags 似乎在增加论点 --disable-dev-shm-usage 会暂时解决问题。

    如果您希望启动/span 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");
    

    禁用dev shm用法

    base_switches.cc disable-dev-shm-usage 似乎只有在

    #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
    

    在讨论中 Add an option to use /tmp instead of /dev/shm

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

    至于为什么不在默认情况下使用,这是共享内存团队推倒的,我想应该在默认情况下对共享内存使用/dev/shm。


    参考文献

    您可以在以下位置找到一些详细讨论:


    以下是指向 Sandbox

        2
  •  0
  •   s1n7ax    4 年前

    我从2018年6月4日星期一开始看到这个问题。我们的测试在每个工作日进行。看起来唯一改变的是googlechrome版本(已经更新到当前版本)JVM和Selenium是Linux box上的最新版本(java1.8.0_151、Selenium 3.12.0、googlechrome 67.0.3396.62和xvfb run)。
    特别是添加参数” --没有沙箱 “和” --禁用dev shm用法 错误停止了。 我将研究这些问题,以找到更多关于效果的信息,以及其他问题,比如是什么触发了googlechrome的更新。

    ChromeOptions options = new ChromeOptions();
            ...
            options.addArguments("--no-sandbox");
            options.addArguments("--disable-dev-shm-usage");