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

Hon*_*ong 8 python selenium google-chrome selenium-chromedriver selenium-webdriver

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

我使用的是 Windows 10 / Chrome 版本 67 / Python 3.6.4 / Selenium 3.12.0

Deb*_*anB 9

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


原因

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


结论

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

  • 除了使用 ChromeDriver 之外还有其他选择吗?这种不断的更新对我的一些客户造成了严重破坏。 (3认同)

big*_*ubr 9

我正在使用这个对我有用的库。

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

项目介绍

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

安装

pip install chromedriver-autoinstaller
Run Code Online (Sandbox Code Playgroud)

例子

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
Run Code Online (Sandbox Code Playgroud)

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

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

pip install chromedriver-autoinstaller
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

-我的模板的实际完整版本(留下注释更快并减少重复工作,取消注释使其更加依赖更少)


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)


Run Code Online (Sandbox Code Playgroud)

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


import os
os.system("pip install  selenium ")
os.system("pip install  chromedriver_autoinstaller ")
Run Code Online (Sandbox Code Playgroud)