如何在 Chrome 浏览器通过 Python selenium 自动更新时使用特定版本的 ChromeDriver

新手上路,请多包涵

我是 Selenium 的新手,我现在可以使用 selenium 和 Chromedriver 来做基本的自动测试,代码工作正常,但问题是 Chrome 浏览器总是在后端自动更新,并且代码总是在 Chrome 更新后无法运行.我知道我需要下载新的 chromedriver 来解决这个问题,但我想知道是否有任何方法可以在不禁用 chromebrowser 更新的情况下解决这个问题?谢谢。

我正在使用 Windows 10 / Chrome 版本 67 / Python 3.6.4 / Selenium 3.12.0

原文由 Hong 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

,除了更新 ChromeDriver 二进制版本之外别无选择,而 Chrome 浏览器 会不断自动更新。


原因

每个 Chrome 浏览器 都是在对现有功能添加、修改和删除某些功能后发布的。为了符合当前的 浏览器功能 集, Chrome 团队 不时发布兼容的 ChromeDriver 二进制文件。这些 ChromeDriver 二进制文件能够与 Chrome 浏览器 交互。某些版本的 ChromeDriver 二进制文件支持特定范围的 Chrome 浏览器 版本(一些最新版本),如下所示:

  • ChromeDriver v 84.0.4147.30 (2020-05-28)
   Supports Chrome version 84

  • ChromeDriver v 83.0.4103.39 (2020-05-05)
   Supports Chrome version 83

  • ChromeDriver v 82 被有意跳过。

  • ChromeDriver v 81.0.4044.138 (2020-05-05)

   Supports Chrome version 81

  • ChromeDriver v 80.0.3987.106 (2020-02-13)
   Supports Chrome version 80

  • ChromeDriver v 79.0.3945.36 (2019-11-18)
   Supports Chrome version 79

  • ChromeDriver v 78.0.3904.70 (2019-10-21)
   Supports Chrome version 78

  • ChromeDriver v 77.0.3865.40 (2019-08-20)
   Supports Chrome version 77

  • ChromeDriver v 76.0.3809.126 (2019-08-20)
   Supports Chrome version 76

  • ChromeDriver v 75.0.3770.8 (2019-04-29)
   Supports Chrome version 75

  • ChromeDriver v 74.0.3729.6 (2019-03-14)
   Supports Chrome version 74

  • ChromeDriver v 73.0.3683.68 (2019-03-06)
   Supports Chrome version 73

  • ChromeDriver v 2.46 (2019-02-01)
   Supports Chrome v71-73

  • ChromeDriver v 2.45 (2018-12-10)
   Supports Chrome v70-72

  • ChromeDriver v 2.44 (2018-11-19)
   Supports Chrome v69-71

  • ChromeDriver v 2.43 (2018-10-16)
   Supports Chrome v69-71

  • ChromeDriver v 2.42 (2018-09-13)
   Supports Chrome v68-70

  • ChromeDriver v 2.41 (2018-07-27)
   Supports Chrome v67-69

  • ChromeDriver v 2.40 (2018-06-07)
   Supports Chrome v66-68

  • ChromeDriver v 2.39 (2018-05-30)
   Supports Chrome v66-68

  • ChromeDriver v 2.38 (2018-04-17)
   Supports Chrome v65-67

  • ChromeDriver v 2.37 (2018-03-16)
   Supports Chrome v64-66

  • ChromeDriver v 2.36 (2018-03-02)
   Supports Chrome v63-65

  • ChromeDriver v 2.35 (2018-01-10)
   Supports Chrome v62-64

  • ChromeDriver v 2.34 (2017-12-10)
   Supports Chrome v61-63

  • ChromeDriver v 2.33 (2017-10-03)
   Supports Chrome v60-62

  • ChromeDriver v 2.32 (2017-08-30)
   Supports Chrome v59-61

  • ChromeDriver v 2.31 (2017-07-21)
   Supports Chrome v58-60

  • ChromeDriver v 2.30 (2017-06-07)
   Supports Chrome v58-60

  • ChromeDriver v 2.29 (2017-04-04)
   Supports Chrome v56-58


结论

为了使您的脚本/程序与更新后的 Chrome 浏览器 保持交互,您必须根据兼容性使 ChromeDriver 二进制文件的版本与 Chrome 浏览 器保持同步。

原文由 undetected Selenium 发布,翻译遵循 CC BY-SA 4.0 许可协议

我正在使用这个为我工作的图书馆。

https://pypi.org/project/chromedriver-autoinstaller/

项目介绍

chromedriver-autoinstaller 自动下载并安装支持当前安装的 chrome 版本的 chromedriver。此安装程序支持 Linux、MacOS 和 Windows 操作系统。

安装

pip install chromedriver-autoinstaller

例子

from selenium import webdriver
import chromedriver_autoinstaller

chromedriver_autoinstaller.install()  # Check if the current version of chromedriver exists
                                      # and if it doesn't exist, download it automatically,
                                      # then add chromedriver to path

driver = webdriver.Chrome()
driver.get("http://www.python.org")
assert "Python" in driver.title

编辑。我还使用了@ATJ 评论的选项,但用于定义 chrome 的 binary_location() 而不是 CHROMEDRIVER_PATH。实际上,我喜欢这个扩展的其中一件事是不需要指定这个路径,因为它已经处理好了。在使用它之前,我过去常常浪费时间放置路径,搜索它的位置,将驱动程序的副本放入项目文件夹或系统路径文件夹中。

我还用这个快速代码制作了一个模板来使用硒,我用它打开新文件然后继续就是这样:


import chromedriver_autoinstaller
from selenium import webdriver
chromedriver_autoinstaller.install()
options = webdriver.ChromeOptions()
options.binary_location = ('C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe')
driver = webdriver.Chrome(options=options)

还有这个快速脚本第一次在新电脑上使用时在终端上运行


import os
os.system("pip install  selenium ")
os.system("pip install  chromedriver_autoinstaller ")

- 真正完整版的我的模板(留下注释更快,减少重复工作,取消注释更无依赖)


import chromedriver_autoinstaller
from selenium import webdriver
#from selenium.webdriver.common.keys import Keys
# import os
#    # to use when 1st time on the machine and then leave comented
# os.system("pip install  selenium ")
# os.system("pip install  chromedriver_autoinstaller ")
chromedriver_autoinstaller.install()
options = webdriver.ChromeOptions()
options.headless = False
options.binary_location = ('C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe')
driver = webdriver.Chrome(options=options)

编辑。 2 - 具有二进制 loc 的我的模板的实际完整版本。出色地 。我刚刚用 binary_location 测试了代码,它也能正常工作。好吧,不知道为什么它以前不工作,这个位置是默认的,所以不应该改变,除非在安装 chrome 时有人改变了。现在重新审视它是件好事,我刚刚从我未来对它的所有使用中节省了一行。


import chromedriver_autoinstaller
from selenium import webdriver
#from selenium.webdriver.common.keys import Keys
# import os
#    # to use when 1st time on the machine and then leave comented
# os.system("pip install  selenium ")
# os.system("pip install  chromedriver_autoinstaller ")
chromedriver_autoinstaller.install()
options = webdriver.ChromeOptions()
options.headless = False
driver = webdriver.Chrome(options=options)

原文由 bigubr 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏