为什么硒chromedriver比常规chrome使用更少的资源

时间:2019-01-25 19:19:52

标签: performance selenium google-chrome selenium-chromedriver

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

我能够找到原因之一是硒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 Resource Monitor,我分析了I / O的使用情况,并看到大量写入chrome_url_fetcher目录和另一个目录,并用下划线分隔了两个随机的5位数字。 RANDOMNUMBER_RANDOMNUMBER。这两个目录都位于%temp%文件夹中,并且包含名称中包含“ pepperflashplayer”的文件。

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

1 个答案:

答案 0 :(得分:2)

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:跳过首次运行任务,无论它是否真的是首次运行。
  • --no-service-autorun:禁止服务进程将自身添加为自动运行进程。
  • --password-store=basic:指定要使用的加密存储后端。
  • --remote-debugging-port=0:在指定端口上通过 HTTP 启用远程调试。
  • --test-type=webdriver:当前测试工具的类型(“浏览器”或“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 更轻巧,内存消耗更少。