private WebDriver createSafariDriver(Config config, Proxy proxy) { if (!config.browserBinary().isEmpty()) { log.info("Using browser binary: " + config.browserBinary()); log.warning("Changing browser binary not supported in Safari, setting will be ignored."); } return createInstanceOf("org.openqa.selenium.safari.SafariDriver", config, proxy); } }
private WebDriver createInternetExplorerDriver(Config config, Proxy proxy) { DesiredCapabilities capabilities = createCommonCapabilities(config, proxy); InternetExplorerOptions options = new InternetExplorerOptions(capabilities); if (!config.browserBinary().isEmpty()) { log.info("Using browser binary: " + config.browserBinary()); log.warning("Changing browser binary not supported in InternetExplorer, setting will be ignored."); } return new InternetExplorerDriver(options); } }
private WebDriver createEdgeDriver(Config config, Proxy proxy) { DesiredCapabilities capabilities = createCommonCapabilities(config, proxy); EdgeOptions options = new EdgeOptions(); options.merge(capabilities); if (!config.browserBinary().isEmpty()) { log.info("Using browser binary: " + config.browserBinary()); log.warning("Changing browser binary not supported in Edge, setting will be ignored."); } return new EdgeDriver(options); } }
OperaOptions createOperaOptions(Config config, Proxy proxy) { OperaOptions operaOptions = new OperaOptions(); if (config.headless()) { throw new InvalidArgumentException("headless browser not supported in Opera. Set headless property to false."); } if (!config.browserBinary().isEmpty()) { log.info("Using browser binary: " + config.browserBinary()); operaOptions.setBinary(config.browserBinary()); } operaOptions.merge(createCommonCapabilities(config, proxy)); return operaOptions; } }
ChromeOptions createChromeOptions(Config config, Proxy proxy) { ChromeOptions options = new ChromeOptions(); options.setHeadless(config.headless()); if (!config.browserBinary().isEmpty()) { log.info("Using browser binary: " + config.browserBinary()); options.setBinary(config.browserBinary()); } options.merge(createCommonCapabilities(config, proxy)); options = transferChromeOptionsFromSystemProperties(options); log.config("Chrome options:" + options.toString()); return options; }
Capabilities getBrowserBinaryCapabilities(Config config, Browser browser) { log.info("Using browser binary: " + config.browserBinary()); if (browser.isChrome()) { ChromeOptions options = new ChromeOptions(); options.setBinary(config.browserBinary()); return options; } else if (browser.isFirefox()) { FirefoxOptions options = new FirefoxOptions(); options.setBinary(config.browserBinary()); return options; } else { log.warning("Changing browser binary on remote server is only supported for Chrome/Firefox, setting will be ignored."); } return new DesiredCapabilities(); }
FirefoxOptions createFirefoxOptions(Config config, Proxy proxy) { FirefoxOptions firefoxOptions = new FirefoxOptions(); firefoxOptions.setHeadless(config.headless()); if (!config.browserBinary().isEmpty()) { log.info("Using browser binary: " + config.browserBinary()); firefoxOptions.setBinary(config.browserBinary()); } firefoxOptions.addPreference("network.automatic-ntlm-auth.trusted-uris", "http://,https://"); firefoxOptions.addPreference("network.automatic-ntlm-auth.allow-non-fqdn", true); firefoxOptions.addPreference("network.negotiate-auth.delegation-uris", "http://,https://"); firefoxOptions.addPreference("network.negotiate-auth.trusted-uris", "http://,https://"); firefoxOptions.addPreference("network.http.phishy-userpass-length", 255); firefoxOptions.addPreference("security.csp.enable", false); firefoxOptions.addPreference("network.proxy.no_proxies_on", ""); firefoxOptions.merge(createCommonCapabilities(config, proxy)); firefoxOptions = transferFirefoxProfileFromSystemProperties(firefoxOptions); return firefoxOptions; }
DesiredCapabilities getDriverCapabilities(Config config, Browser browser, Proxy proxy) { DesiredCapabilities capabilities = createCommonCapabilities(config, proxy); capabilities.setBrowserName(getBrowserNameForGrid(config, browser)); if (config.headless()) { capabilities.merge(getHeadlessCapabilities(config, browser)); } if (!config.browserBinary().isEmpty()) { capabilities.merge(getBrowserBinaryCapabilities(config, browser)); } return capabilities; }