启动SeleniumchromeDriver的最快方法:使用什么命令行标志



问题:

我正在寻找启动Selenium Chrome网络驱动程序的最快方法,即加速这段代码:

from selenium import webdriver
driver = webdriver.Chrome()

我在ChromeOptions上使用了带有以下参数的无头浏览器:

op = webdriver.ChromeOptions()
op.add_argument('--headless')
op.add_argument("--disable-dev-shm-usage")
op.add_argument("--no-sandbox")
op.binary_location = GOOGLE_CHROME_BIN_PATH
driver = webdriver.Chrome(executable_path = CHROMEDRIVER_PATH, options = op)

有没有办法让启动更快?

我在这里找到了许多命令行开关的列表https://peter.sh/experiments/chromium-command-line-switches/但我不确定该选择哪一个来实现我想要实现的目标。

背景:

每次请求进入我的应用程序时,我都需要一个单独的网络驱动程序实例来做一些事情:

  1. 一个请求来了
  2. Web驱动程序启动
  3. Webdriver按照请求指定的方式执行操作
  4. Web驱动程序关闭
  5. 将汇总结果,并发送响应

我对预先准备网络驱动程序不感兴趣。目前,考虑到与我交互的网页的复杂性,我也无法使用requests作为替代方案。使用网络驱动程序更容易,也可能更安全。因此,我需要优化网络驱动程序的启动,因为响应请求需要花费大部分时间。

我正在寻找同样的东西,就我在网上发现的而言,你可以设置驱动程序路径(这主要适用于未检测到的驱动程序,因为它每次启动都会下载驱动程序(,你还可以提供一个到chrome配置文件的路径,这样它就不会在每次浏览器启动时创建。

另一种可能性是调整程序的逻辑,在我的情况下,保持驱动程序运行并有一个检查新请求的循环是很方便的(然后请求需要以某种方式与运行驱动程序的程序进行通信,例如通过HTTP服务器或简单地通过文件系统,在某个目录中为每个请求创建一个文件,并让驱动程序在其中执行请求后将其删除(。让驱动程序在docker中运行也是一种选择,但与让它在主机上运行相比,这并没有带来太多驱动程序启动的速度。

在Github上打开一个问题,询问实现更快启动的建议,这可能也是一个好主意。另一种需要更多操作的可能性是切换到另一个浏览器模拟框架,如cypry或剧作家/木偶师。

另一种方法是测试不同的chrome浏览器实现/版本,以下是不同谷歌chrome发布渠道的列表:https://googlechromelabs.github.io/chrome-for-testing/.我用beta通道启动得更快。测试旧版本可能很有趣,但我找不到它们的官方链接列表,这可能会带来新的html/css/第三方兼容性问题;基本上,投资于进一步研究这一点的努力与要开发的工具的重要性/效益有关。

最新更新