36

我将如何获得正在使用的浏览器版本?

>>> from selenium import webdriver
>>> driver = webdriver.Firefox()
>>> print version <-- how to do this?
    Firefox 12.0
4

8 回答 8

41

这个答案使我走上了正确的道路,但特定于python,而且主题更广泛。所以,我正在为 Java 添加一个更棘手的答案。此时我使用的是 selenium 2.25.0。

//make sure have correct import statements - I had to add these
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

WebDriver driver = new FirefoxDriver();

Capabilities caps = ((RemoteWebDriver) driver).getCapabilities();
String browserName = caps.getBrowserName();
String browserVersion = caps.getVersion();
System.out.println(browserName+" "+browserVersion);
于 2012-11-28T18:30:02.523 回答
36

capabilities属性是一个包含有关浏览器本身信息的字典,因此应该可以:

print(driver.capabilities['version'])
于 2012-09-24T05:47:25.937 回答
6

如果您使用的是 Chrome,您可以执行以下操作:

driver.capabilities['version']

如果您使用的是 Firefox:

driver.capabilities['browserVersion']
于 2018-08-23T12:41:37.097 回答
5

如果driver.capabilities['version']对您不起作用,请检查功能。版本号在那里,但它可能在不同的密钥下。例如,当我尝试使用密钥访问版本号时,我在 Windows 10 上遇到了密钥错误version

要检查功能:

print driver.capabilities

对我来说,这适用于 Chrome/Linux

driver.capabilities['version']

这适用于 Chrome/Windows 10

driver.capabilities['browserVersion']
于 2019-08-12T19:09:23.773 回答
3

虽然这可能不能完全回答上面的问题,但这对于那些正在寻找一种基于从不同浏览器(即 Firefox 与 Chrome)接收到的不同行为来编写测试代码的人来说仍然很有用。当我偶然发现这个线程时,我正在寻找这个,所以我想我会添加它以防它可以帮助其他人。

在 Python 上,如果您只是在寻找您正在测试的浏览器(即 firefox、chrome、ie 等),那么您可以使用...

driver.name

...在if语句中。这假设您已经为您正在测试的网络浏览器(即 Firefox、Chrome、IE 等)分配了驱动程序。但是,如果您的任务是测试同一浏览器的多个版本,那么您将需要更多的东西来驱动程序版本。希望这可以帮助某人。当我发现这个线程时,我正在寻找这个解决方案,所以我想我会添加它以防万一其他人需要它。

于 2015-02-12T22:22:33.213 回答
2

您可以通过访问返回功能对象来提取GeckoDriver启动的会话的浏览器版本,您可以使用以下解决方案:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'
driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\WebDrivers\geckodriver.exe')
my_dict = driver.capabilities
print("Mozilla Firefox browser version is: " + str(my_dict['browserVersion']))
driver.quit()

控制台输出:

Mozilla Firefox browser version is: 77.0.1

提取所有能力

同样,您可以从字典中提取所有属性,如下所示:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'
driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\WebDrivers\geckodriver.exe')
my_dict = driver.capabilities
for key,val in my_dict.items():
    print (key, "=>", val)
driver.quit()

控制台输出:

acceptInsecureCerts => True
browserName => firefox
browserVersion => 77.0.1
moz:accessibilityChecks => False
moz:buildID => 20200602222727
moz:geckodriverVersion => 0.26.0
moz:headless => False
moz:processID => 12668
moz:profile => C:\Users\Soma Bhattacharjee\AppData\Local\Temp\rust_mozprofileFc1B08
moz:shutdownTimeout => 60000
moz:useNonSpecCompliantPointerOrigin => False
moz:webdriverClick => True
pageLoadStrategy => normal
platformName => windows
platformVersion => 10.0
rotatable => False
setWindowRect => True
strictFileInteractability => False
timeouts => {'implicit': 0, 'pageLoad': 300000, 'script': 30000}
unhandledPromptBehavior => dismiss and notify
于 2020-07-09T17:59:24.827 回答
1

如果您将 WebDriver 包装为 EventFiring,则必须执行自定义 EventFiringWebDriver 实现。

import org.openqa.selenium.Capabilities;
import org.openqa.selenium.HasCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.events.EventFiringWebDriver;

public class MyEventFiringWebDriver extends EventFiringWebDriver implements HasCapabilities {

    private RemoteWebDriver driver;

    public MyEventFiringWebDriver(RemoteWebDriver driver) {
        super(driver);
        this.driver = driver;
    }

    @Override
    public Capabilities getCapabilities() {
        return driver.getCapabilities();
    }

}

只是发布,因为这是我遇到的一个问题。

于 2013-08-23T03:06:35.890 回答
1

只是为想要打印所有功能的 Python 用户回答这个问题,因为我在不知不觉中正在搜索它。下面的命令有效。

print driver.capabilities

于 2018-07-26T13:58:07.333 回答