我正在尝试检查 chrome 和 chromedriver 的兼容性,以提示用户在需要时下载正确的 chromedriver 版本。我希望以类似于检查 chrome.exe 的方式检查 chrome 驱动程序的版本,如下所示。
from win32api import GetFileVersionInfo
info = GetFileVersionInfo(path/to/chrome.exe)
如果我有任何误解,请告诉我。
您可以使用
driver. Capabilities ['browserversion ']
和 driver. Capabilities ['chrome'] ['chromedriverversion ']. Split (' ') [0]
获取 chrome 和 chromedriver 的版本。
然后截取版本号的前2位进行比较。如果不相同,您可以根据需要提醒用户下载正确的 chromedriver 版本。
最小示例:
from selenium import webdriver
driver = webdriver.Chrome()
str1 = driver.capabilities['browserVersion']
str2 = driver.capabilities['chrome']['chromedriverVersion'].split(' ')[0]
print(str1)
print(str2)
print(str1[0:2])
print(str2[0:2])
if str1[0:2] != str2[0:2]:
print("please download correct chromedriver version")
调试:
您还可以提示用户正确的版本。
下载页面上所述的 Chrome 和 Chromedriver 版本:
如果您使用的是 Chrome 版本 107,请下载 ChromeDriver 107.0.5304.18
如果您使用的是 Chrome 版本 106,请下载 ChromeDriver 106.0.5249.61
...
如果您使用的是 Chrome 版本 79,请下载 ChromeDriver 79.0.3945.36
如果您使用的是 Chrome 版本 78,请下载 ChromeDriver 78.0.3904.70
如果您使用的是 Chrome 版本 77,请下载 ChromeDriver 77.0.3865.40
如果您使用的是 Chrome 版本 76,请下载 ChromeDriver 76.0.3809.126
如果您使用的是 Chrome 版本 75,请下载 ChromeDriver 75.0.3770.140
如果您使用的是 Chrome 版本 74,请下载 ChromeDriver 74.0.3729.6
如果您使用的是 Chrome 版本 73,请下载 ChromeDriver 73.0.3683.68
对于旧版本的 Chrome,请参阅 Barett 的回答
有针对特定 chrome 版本选择 crhomedriver 版本的一般指南:https://sites.google.com/a/chromium.org/chromedriver/downloads/version-selection.
如果您需要更多chrome版本信息,请参考:哪个ChromeDriver版本与哪个Chrome浏览器版本兼容?
注:
早期版本的 chromedriver 存储了 chrome 浏览器版本
driver.capabilities['version']
。如果你想获得chrome浏览器版本而不必担心这个,你可以使用下面的代码。
if 'browserVersion' in driver.capabilities:
print(driver.capabilities['browserVersion'])
else:
print(driver.capabilities['version'])
可能对您有用的链接:
如何使用特定版本的 ChromeDriver,同时 Chrome 浏览器通过 Python selenium 自动更新
对于版本 98.0.1108.50,我通过在控制台中运行以下命令来获取 Windows 上的版本:
(您必须cd到包含msedgedriver.exe文件的目录)
msedgedriver.exe -v
然后我得到: MSEdgeDriver 98.0.1108.50 (4203d3deac4b85375d37f4d77d1ffb334a2a6138)
在 Python 中,我无法获取驱动程序版本,但可以打印浏览器,如下所示: print("Edge 浏览器版本:" + self.driver.capability['browserVersion'])
或者你可以试试这个:
import subprocess
commands = r"cd ../../ && cd [path to your driver] && msedgedriver.exe -v"
process = subprocess.run(commands, shell=True, check=True, stdout=subprocess.PIPE, universal_newlines=True)
output = process.stdout
print("Chromium Driver Version: " + output)
通过下面的代码,您可以在Python中检查运行时chromedriver的版本:
from selenium import webdriver
driver = webdriver.Chrome()
print(driver.capabilities['browserVersion']) # 115.0.5790.171
用于边缘使用
driver = webdriver.Edge(选项=选项,服务=服务(driver_path))
driver.capability['msedge']['msedgedriverVersion'].split(' ')[0]