【问题标题】:chromedriver.exe runs ~8 chrome.exe instanceschromedriver.exe 运行约 8 个 chrome.exe 实例
【发布时间】:2019-10-23 09:09:01
【问题描述】:

我使用 Selenium 编写 UI 自动化测试。而且我注意到,当我创建 chromedriver.exe 的实例时 -> ~8 chrome.exe 进程出现在任务管理器中。

运行 1 次测试时的任务管理器截图:

所以,当我并行运行时,比如说 8 个测试,任务管理器中有很多 chrome.exe 实例,它们使用一些端口并加载 CPU 和内存。

它是按设计工作的吗?为什么一个 chromedriver.exe 需要这么多 chrome.exe 实例?这是可配置的吗?

在我的代码中,我只有一个“Chrome”类。它的构造函数创建了一个新的 chromedriver.exe 实例:

Chrome chrome = new Chrome();

public class Chrome
{
    public OpenQA.Selenium.Chrome.ChromeDriver Driver;

    public Chrome(bool incognitoMode = false, bool maximizeWindow = true)
    {
        ChromeOptions options = new ChromeOptions();
        if (incognitoMode)
        {
            options.AddArguments("--incognito");
        }

        Driver = new ChromeDriver(options);
        Driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(360);
        if (maximizeWindow)
            Driver.Manage().Window.Maximize();
    }
  /////////////////////////////////////////////
}

【问题讨论】:

  • 这就是 Chrome 的行为方式。即使您手动打开浏览器,您也会看到相同的结果。
  • @DebanjanB,是的,你完全正确!我只是认为Chrome浏览器和chromedriver.exe有一些区别。谢谢!

标签: selenium google-chrome selenium-webdriver webdriver selenium-chromedriver


【解决方案1】:

当使用 Google Chrome 执行 自动测试 时,您必须观察到可能有几十个 Google Chrome 进程正在运行,可以观察到通过 Windows 任务管理器的Processes 选项卡。

快照:

根据article,为了获得更好的用户体验 Google Chrome 为每个 TABS 启动了许多后台进程已由您的 @Tests 打开。谷歌试图通过将每个网页分成它认为合适的多个进程来保持 chrome 浏览器的稳定性,以确保如果一个进程在页面上失败,则可以终止或刷新该特定进程,而无需终止或刷新整个页面。


但是,从 2018 年开始,Google Chrome 实际上已经重新设计,为以下每个实体创建了一个新流程:

  1. 标签
  2. 页面上的 HTML/ASP 文本
  3. 已加载的插件
  4. 已加载的应用程序
  5. 页面内的框架

此外,在Chromium Blog 中提到:

谷歌浏览器利用这些属性,将网络应用程序和插件置于与浏览器本身不同的进程中。这意味着一个 Web 应用程序中的渲染引擎崩溃不会影响浏览器或其他 Web 应用程序。这意味着操作系统可以并行运行 Web 应用程序以提高其响应能力,这意味着如果特定的 Web 应用程序或插件停止响应,浏览器本身不会锁定。这也意味着我们可以在限制性沙箱中运行渲染引擎进程,这有助于在漏洞发生时限制损害。

作为结论,您所看到的许多流程都符合设计并符合 Google Chrome 的当前实施。

【讨论】:

  • @DebanjanB,非常感谢您提供这些信息!了解这一点非常有用且重要。
  • @DebanjanB 非常感谢您的详细回答。即使对于经验丰富的专业人士,它们也非常有帮助。 :)
  • @GurmanjotSingh 感谢您的鼓励和贡献。
猜你喜欢
  • 1970-01-01
  • 2014-02-04
  • 2017-07-02
  • 2018-01-29
  • 2011-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多