是否可以在 python 运行时检查 chromedriver.exe 版本?

Is it possible to check chromedriver.exe version at runtime in python?

我正在尝试检查 chrome 和 chrome 驱动程序的兼容性,以提示用户在需要时下载正确的 chrome 驱动程序版本。我希望以类似于下面显示的检查 chrome.exe 的方式检查 chrome 驱动程序的版本。

from win32api import GetFileVersionInfo
info = GetFileVersionInfo(path/to/chrome.exe)

如果我有任何误解,请告诉我。

您可以使用 driver. Capabilities ['browserversion ']driver. Capabilities ['chrome'] ['chromedriverversion ']. Split (' ') [0] 获取 chrome 和 chrome 驱动程序的版本。

然后截取版本号的前2位进行比较。如果不一致,您可以提醒用户下载正确的chrome驱动程序版本。

最小示例:

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 和 Chrome 下载页面上所述的驱动程序版本:

如果您使用的是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 的旧版本,请参阅

针对特定 chrome 版本的 crhomedriver select 版本有一般指南:https://sites.google.com/a/chromium.org/chromedriver/downloads/version-selection

详情请参考:

注:

较早版本的 chrome 驱动程序存储了 chrome 浏览器版本 driver.capabilities['version']。如果你想获得 chrome 浏览器版本而不必担心这个,你可以使用下面的代码。

if 'browserVersion' in driver.capabilities:
    print(driver.capabilities['browserVersion'])
else:
    print(driver.capabilities['version'])

可能对您有用的链接:

How can I get Chrome Browser Version running now with Python? [closed]

对于版本 98.0.1108.50,我通过控制台中的 运行 在 Windows 上获得版本:

(必须cd到文件所在的目录msedgedriver.exe)

msedgedriver.exe-v

然后我得到: MSEdgeDriver 98.0.1108.50 (4203d3deac4b85375d37f4d77d1ffb334a2a6138)

在 Python 中,我无法获得驱动程序版本,但浏览器可以打印如下: print("Edge 浏览器版本:" + self.driver.capabilities['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)