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

2024-05-02

我注意到,当通过 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不是这种情况?我有什么办法可以阻止这一切吗?


The Selenium https://stackoverflow.com/questions/54459701/what-is-selenium-and-what-is-webdriver/54482491#54482491 driven Chrome驱动程序 https://stackoverflow.com/questions/48079120/what-is-the-difference-between-chromedriver-and-webdriver-in-selenium/48080871#48080871发起谷歌浏览器 /questions/tagged/google-chrome v87.0.4280.88浏览上下文是用这些附加的启动的命令行开关 https://peter.sh/experiments/chromium-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:,

这些附加命令行开关的使用使得初始化谷歌浏览器工艺要求较少回调以及禁用更多回调 https://www.w3schools.com/js/js_callback.asp

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

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

然而,Flash所使用的Chrome驱动程序启动的 Chrome 会话是:

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

由于上述原因Chrome驱动程序 https://stackoverflow.com/questions/59909654/how-does-chrome-driver-interact-with-chrome-browser/59927747#59927747发起谷歌浏览器比常规的更轻,消耗的内存更少谷歌浏览器.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 selenium chromedriver 使用的资源比常规 chrome 少 的相关文章

  • 在不使用 Thread.sleep 的情况下单击网页后等待弹出警报

    在网页上单击搜索后 会弹出警报 我需要等到弹出窗口出现 我必须不使用 Thread sleep ExpectedConditions 类具有特定的等待警报弹出窗口的功能 WebDriverWait wait new WebDriverWai
  • JavaFX 中 WebView 的性能

    我有一个 HTML5 UI 和一个 Java 后端 并且希望避免在纯 java 中重建 HTML ui 所以我的想法是运行本地 Web 服务器并使用 WebView 在 本机 窗口中呈现它 解决方案似乎是使用可以嵌入到 swing 中的 J
  • Android 性能:SharedPreferences 的成本

    当我的应用程序启动时 我使用分片首选项中的值填充容器类 这个想法是处理 SharedPreferences 和 PreferenceManager 一次 因为我猜它们很重 这是一个示例 SharedPreferences prefs Pre
  • Selenium IDE-自动化Select2搜索框

    我正在尝试自动化 selenium IDE 中的 select2 搜索框 我打开它并输入了我正在搜索的搜索关键字 但是 即使我有用于显示结果的代码 它也不起作用 问题是我猜字符输入得太快 因此结果不会显示在搜索框中 我确信我在某个地方出错了
  • 当我使用可变参数而不是常量参数时,为什么我的内联表 UDF 慢得多?

    我有一个表值内联 UDF 我想过滤该 UDF 的结果以获得一个特定值 当我使用常量参数指定过滤器时 一切都很好 并且性能几乎是瞬时的 当我使用可变参数指定过滤器时 它会花费明显更大的时间块 大约是逻辑读取的 500 倍和持续时间的 20 倍
  • Chrome toDataURI 错误

    直到大约一天前 Canvas2Image JS 库和 toDataURI JS 方法还可以在 Chrome 中使用 http www nihilogic dk labs canvas2image http www nihilogic dk
  • 最新版 Firefox for Android 36.0 不支持应用深度链接

    我有一个 android 应用程序 在其中定义了意图过滤器来处理对我的网站的任何 http 请求 以在我构建的应用程序中打开 在 Chrome 上 我收到在应用程序中打开的提示 但在 Firefox 上却没有 这在 Firefox 上还没有
  • IIS7 上的 ASP.NET 应用程序 - iisreset 后启动速度非常慢

    我有一个在 Windows 2008 上的 IIS7 下运行的 ASP NET 3 5 网站 当我重新启动 IIS iisreset 然后点击一个页面时 初始启动非常慢 我在 Process Explorer 中看到以下活动 w3wp ex
  • 滚动时输入自动完成位置错误(chrome)

    我在输入文本的默认自动完成功能方面遇到了一些麻烦 滚动时它不会相应移动 我希望自动完成文本保留在输入的正下方 有办法做到这一点吗 我在 Chrome 浏览器版本 57 0 2987 133 中发生这种情况 fiddle https jsfi
  • Selenium 与 HtmlUnit? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我试图更好地理解测试框架并一直在研究 Selenium 我用过HTMLUnit http htmlun
  • Pandas dataframe:每批行的操作

    我有一个熊猫数据框df我想计算每批行的一些统计信息 例如 假设我有一个batch size 200000 对于每批batch sizerows 我想要一列的唯一值的数量ID我的数据框 我怎样才能做这样的事情呢 这是我想要的一个例子 prin
  • 无法摆脱脚本中的硬编码延迟

    我用 vba 结合 selenium 编写了一个脚本来解析网页中可用的所有公司名称 该网页启用了延迟加载方法 因此每个滚动中只有 20 个链接可见 如果我滚动 2 次 则可见链接数为 40 个 依此类推 该网页中有 1000 个可用链接 我
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 获取特定选项卡的 URL?

    在 Google Chrome 中 如何获取特定选项卡上显示的页面的 URL 这取决于你如何定义特定选项卡 有许多功能可以获取选项卡 从而返回一个选项卡选项卡对象 http code google com chrome extensions
  • 使用 FileInputStream 时如何确定理想的缓冲区大小?

    我有一个从文件创建 MessageDigest 哈希 的方法 我需要对很多文件 gt 100 000 执行此操作 用于读取文件的缓冲区应该设置多大才能最大限度地提高性能 大多数人都熟悉基本代码 为了以防万一 我将在这里重复一遍 Messag
  • 如何使用C#与Chrome(Chrome扩展)通信?

    我想创建一个可以在我的 C 应用程序和扩展之间进行通信的桥梁 这是我真正想要的解释 我创建了一个扩展 它将获取 HTML 元素的详细信息 但每次启动 Chrome 时都会启动 除了这样做之外 有什么方法可以向我的 chrome 扩展发送消息
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 为什么在展开的 ADD 循环内重新初始化寄存器会使其运行速度更快,即使循环内有更多指令?

    我有以下代码 include
  • 每次我们调用浏览器时,在 selenium 中使用 driver.manage().window().maximize() 是否好?

    We use driver manage window maximize 最大化浏览器 我在网上看到一些使用的例子driver manage window maximize 尽管不需要最大化浏览器 例如 gmail 登录 我还看到使用 se
  • NHibernate - CreateCriteria 与 CreateAlias

    假设以下场景 class Project public Job Job class Job public Name 假设我想使用 Criteria API 搜索其 Job 名称为 sumthing 的所有项目 我可以使用 CreateAli

随机推荐