LazyDriver(Config config, Proxy userProvidedProxy, List<WebDriverEventListener> listeners, WebDriverFactory factory, BrowserHealthChecker browserHealthChecker) { this.config = config; this.browser = new Browser(config.browser(), config.headless()); this.userProvidedProxy = userProvidedProxy; this.listeners.addAll(listeners); this.factory = factory; this.browserHealthChecker = browserHealthChecker; }
@Override public Browser browser() { return new Browser(config.browser(), config.headless()); }
private Capabilities getHeadlessCapabilities(Config config, Browser browser) { log.info("Starting in headless mode"); if (browser.isChrome()) { ChromeOptions options = new ChromeOptions(); options.setHeadless(config.headless()); return options; } else if (browser.isFirefox()) { FirefoxOptions options = new FirefoxOptions(); options.setHeadless(config.headless()); return options; } else { log.warning("Headless mode on remote server is only supported for Chrome/Firefox, setting will be ignored."); } return new DesiredCapabilities(); }
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; }
public WebDriver createWebDriver(Config config, Proxy proxy) { log.config("browser=" + config.browser()); log.config("browser.version=" + config.browserVersion()); log.config("remote=" + config.remote()); log.config("browserSize=" + config.browserSize()); log.config("startMaximized=" + config.startMaximized()); Browser browser = new Browser(config.browser(), config.headless()); if (config.driverManagerEnabled() && config.remote() == null) { webDriverBinaryManager.setupBinaryPath(browser); } WebDriver webdriver = factories.stream() .filter(factory -> factory.supports(config, browser)) .findAny() .map(driverFactory -> driverFactory.create(config, proxy)) .orElseGet(() -> new DefaultDriverFactory().create(config, proxy)); webdriver = browserResizer.adjustBrowserSize(config, browser, webdriver); webdriver = browserResizer.adjustBrowserPosition(config, webdriver); logBrowserVersion(webdriver); log.info("Selenide v. " + SelenideDriver.class.getPackage().getImplementationVersion()); logSeleniumInfo(config); return webdriver; }
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; } }
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; }
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; }