【问题标题】:Why does selenium chromedriver use less resources than regular chrome为什么 selenium chromedriver 使用的资源比普通 chrome 少
【发布时间】:2019-06-19 15:51:36
【问题描述】:

我注意到,通过 selenium chromedriver 使用新的用户数据目录启动 chrome 时,它​​使用的资源(cpu、内存和磁盘)比正常启动时少得多。

我能够找到的原因之一是 selenium chromedriver 使用这些参数启动:

--disable-background-networking
--disable-client-side-phishing-detection
--disable-default-apps
--disable-hang-monitor
--disable-popup-blocking
--disable-prompt-on-repost
--disable-sync
--disable-web-resources
--enable-automation
--enable-logging
--force-fieldtrials=SiteIsolationExtensions/Control
--ignore-certificate-errors
--log-level=0
--metrics-recording-only
--no-first-run
--password-store=basic
--test-type=webdriver 
--use-mock-keychain

应用这些参数后,cpu、内存和磁盘使用率大幅下降。但是,磁盘使用率仍然高出大约 10 倍。使用 Windows 资源监视器,我分析了 I/O 使用情况,看到大量写入 chrome_url_fetcher 目录和另一个目录,其中两个随机 5 位数字由下划线分隔; RANDOMNUMBER_RANDOMNUMBER。这两个目录都在 %temp% 文件夹中,并且包含名称中包含“pepperflashplayer”的文件。

我假设这是 chrome 为 Pepperflash 安装必要的组件,但为什么 selenium chromedriver 不是这种情况?有什么办法可以阻止这种情况吗?

【问题讨论】:

    标签: performance selenium google-chrome selenium-chromedriver


    【解决方案1】:

    Selenium 驱动的 ChromeDriver 发起 v87.0.4280.88 浏览上下文是使用这些额外的 Command Line Switches 发起的:

    • --disable-background-networking:禁用多个在后台运行网络请求的子系统。
    • --disable-client-side-phishing-detection:禁用客户端网络钓鱼检测功能。
    • --disable-default-apps:在首次运行时禁用默认应用程序的安装。这在自动化测试期间使用。
    • --disable-hang-monitor:禁止在渲染器进程中挂起监视器对话框。
    • --disable-popup-blocking:禁用弹出窗口阻止。
    • --disable-prompt-on-repost:此开关可用于禁用检查用户是否尝试导航到作为帖子结果的页面。
    • --disable-sync:禁止将浏览器数据同步到 Google 帐户。
    • --enable-automation:启用浏览器由自动化控制的指示。
    • --enable-blink-features=ShadowDOMV0:启用一项或多项支持 Blink 运行时的功能。
    • --enable-logging:控制是否启用控制台日志记录,并可选择配置它的路由位置。
    • --log-level=0:设置最低日志级别。
    • --no-first-run: 跳过 First Run 任务,不管它是否真的是 First Run。
    • --no-service-autorun:禁止服务进程将自身添加为自动运行进程。
    • --password-store=basic:指定要使用的加密存储后端。
    • --remote-debugging-port=0:在指定端口上通过 HTTP 启用远程调试。
    • --test-type=webdriver:当前测试工具的类型(“browser”或“ui”或“webdriver”)。
    • --use-mock-keychain
    • --user-data-dir="C:\Users\username\AppData\Local\Temp\scoped_dir9640_113432031:浏览器存储用户配置文件的目录。
    • data:,

    这些额外的命令行开关的使用使得 Google Chrome 进程的初始化需要更少的回调以及更多的禁用callbacks

    除此之外,常规 chrome 会话使用的 Flash 是:

    32.0.0.465 C:\Users\username\AppData\Local\Google\Chrome\User Data\PepperFlash\32.0.0.465\pepflashplayer.dll
    

    其中,ChromeDriver 启动的 chrome 会话使用的 Flash 是:

    30.0.0.154 C:\WINDOWS\system32\Macromed\Flash\pepflashplayer64_30_0_0_154.dll
    

    由于上述原因,ChromeDriver 发起的 Google Chrome 比常规的 Google Chrome 更轻巧且内存消耗更少。

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 2018-12-10
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2013-09-09
      • 2020-09-24
      相关资源
      最近更新 更多