【问题标题】:Get browser version using selenium webdriver使用 selenium webdriver 获取浏览器版本
【发布时间】:2012-09-15 09:20:39
【问题描述】:

如何获取正在使用的浏览器版本?

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

【问题讨论】:

  • 从 Firefox 版本 48 及更高版本您可以看到答案here
  • 加上@ArgiesDario driver.capabilities["browserVersion"] Chrome 链接的答案,FF 至少现在都实现了该功能。

标签: python selenium selenium-webdriver firefox geckodriver


【解决方案1】:

这个答案让我走上了正确的道路,但它是特定于 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);

【讨论】:

    【解决方案2】:

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

    print(driver.capabilities['version'])
    

    【讨论】:

      【解决方案3】:

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

      driver.capabilities['version']
      

      如果您使用的是 Firefox:

      driver.capabilities['browserVersion']
      

      【讨论】:

        【解决方案4】:

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

        检查能力:

        print driver.capabilities
        

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

        driver.capabilities['version']
        

        这适用于 Chrome/Windows 10

        driver.capabilities['browserVersion']
        

        【讨论】:

          【解决方案5】:

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

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

          driver.name
          

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

          【讨论】:

            【解决方案6】:

            您可以通过访问返回capabilities 对象来提取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
            

            【讨论】:

              【解决方案7】:

              如果您将 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();
                  }
              
              }
              

              只是因为这是我遇到的问题才发帖。

              【讨论】:

                【解决方案8】:

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

                print driver.capabilities

                【讨论】:

                  猜你喜欢
                  • 2016-11-16
                  • 2012-05-30
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-10-15
                  相关资源
                  最近更新 更多