【问题标题】:MS Edge: Unable to get browser version via Capabilities.getVersion()MS Edge:无法通过 Capabilities.getVersion() 获取浏览器版本
【发布时间】:2017-06-26 17:57:58
【问题描述】:

我有一个使用不同浏览器的 Java 的 Selenium 项目。我正在尝试介绍 MS Edge,但在使用 Capabilities 中的 getVersion() 方法时遇到了问题。下面是初始化浏览器的方法的代码 sn-p。 WebDriver“驱动程序”在类的开头声明。

            if(strBrowser.equalsIgnoreCase("Edge"))
        {
            String FileName=m1.get("TOOLS_PATH").toString()+"//MicrosoftWebDriver.exe";
            System.out.println("Full path to Edge executable: " + FileName);

            File edgeDriver = new File(FileName);
            System.setProperty("webdriver.edge.driver", edgeDriver.getAbsolutePath());  

            DesiredCapabilities caps = DesiredCapabilities.edge();

            driver = new EdgeDriver(caps);  //launches Edge browser


        }


        Capabilities caps = ((RemoteWebDriver) driver).getCapabilities();           
        String browserName = caps.getBrowserName();
        String browserVersion = caps.getVersion().toString();

在 ecliipse 中调试期间,当我在初始化后将鼠标悬停在“caps”对象上时,它会显示以下内容: 功能 [{acceptSslCerts=true, browserVersion=25.10586.672.0, platformVersion=10, browserName=MicrosoftEdge, takeScreenshot=true, pageLoadStrategy=normal, takesElementScreenshot=true, platformName=windows, platform=ANY}]

字符串 browserName 显示为“MicrosoftEdge”,但 browserVersion 显示为空。我希望它会是“25.10586.672.0”

【问题讨论】:

    标签: selenium selenium-webdriver microsoft-edge


    【解决方案1】:

    试试下面的方法

    String browser_version = null;
        Capabilities cap = ((RemoteWebDriver) browserDriver).getCapabilities();
        String browsername = cap.getBrowserName();
        // This block to find out IE Version number
        if ("internet explorer".equalsIgnoreCase(browsername)) {
            String uAgent = (String) ((JavascriptExecutor) browserDriver).executeScript("return navigator.userAgent;");
            System.out.println(uAgent);
            //uAgent return as "MSIE 8.0 Windows" for IE8
            if (uAgent.contains("MSIE") && uAgent.contains("Windows")) {
                browser_version = uAgent.substring(uAgent.indexOf("MSIE")+5, uAgent.indexOf("Windows")-2);
            } else if (uAgent.contains("Trident/7.0")) {
                browser_version = "11.0";
            } else {
                browser_version = "0.0";
            }
        } else
        {
            //Browser version for Firefox and Chrome
            browser_version = cap.getVersion();// .split(".")[0];
        }
        String browserversion = browser_version.substring(, browser_version.indexOf("."));
        return browsername + " " + browserversion;
    

    【讨论】:

      【解决方案2】:

      在 firefox 和 Edge 中,您需要指定需要其值的字段名称 - 所以请这样做:

      Capabilities capabilities = ((RemoteWebDriver) webDriver).getCapabilities();
      String browserVersion = capabilities.getCapability("browserVersion").toString();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-03
        • 1970-01-01
        • 2016-06-19
        • 2022-08-03
        • 1970-01-01
        • 1970-01-01
        • 2021-08-28
        • 2022-09-30
        相关资源
        最近更新 更多