如何在Selenium RemoteWebDriver中设置浏览器版本?

时间:2015-07-16 19:54:15

标签: java selenium

当我使用HtmlUnitDriver时,我可以设置我自己的浏览器版本,如:

private HtmlUnitDriver initDriver() {
    BrowserVersion browserVersion = new BrowserVersion(
            BROWSER_NAME,
            BROWSER_OS,
            USER_AGENT,
            Float.parseFloat(BROWSER_VERSION));
    browserVersion.setBrowserLanguage(BROWSER_LANGUAGE);
    browserVersion.setHtmlAcceptHeader(HTML_ACCEPT_HEADER);
    return new HtmlUnitDriver(browserVersion);
}

是否可以对RemoteWebDriver进行相同的操作?

WebDriver driver = new RemoteWebDriver(
            new URL("http://localhost:4444/wd/hub"),
            myCapabilities);

Capabilities我可以设置myCapabilities.setBrowserName("htmlunit")。这就是我所能做的一切吗?

编辑

要明确,我需要3件事:
a)Selenium-server-standalone能够重用相同的旧SessionID b)使浏览器只能从控制台运行(所以没有firefox afaik)
c)使http请求与最新浏览器相同,因此服务器日志没有区别。

1 个答案:

答案 0 :(得分:1)

您还可以设置许多参数,例如:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setBrowserName("firefox");
capabilities.setVersion("35.0");
capabilities.setPlatform(Platform.VISTA);

try {
    driver = new RemoteWebDriver(new URL("http://192.168.63.109:5555/wd/hub"), capabilities);
} catch (MalformedURLException e) {
    e.printStackTrace();
}

使用自定义FirefoxProfile跳过文件下载对话框的更多设置:

public static WebDriver setDriver() {

     FirefoxProfile fxProfile = new FirefoxProfile();

     fxProfile.setPreference("browser.download.folderList", 2);
     fxProfile.setPreference("browser.helperApps.alwaysAsk.force", false);
     fxProfile.setPreference("browser.download.manager.showWhenStarting", false);
     fxProfile.setPreference("browser.download.dir", dir);
     fxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.ms-excel," +
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

     return new FirefoxDriver(fxProfile);
}