Search in sources :

Example 81 with FirefoxDriver

use of org.openqa.selenium.firefox.FirefoxDriver in project nutch by apache.

the class HttpWebClient method getDriverForPage.

public static WebDriver getDriverForPage(String url, Configuration conf) {
    WebDriver driver = null;
    DesiredCapabilities capabilities = null;
    long pageLoadWait = conf.getLong("page.load.delay", 3);
    try {
        String driverType = conf.get("selenium.driver", "firefox");
        switch(driverType) {
            case "firefox":
                String allowedHost = conf.get("selenium.firefox.allowed.hosts", "localhost");
                long firefoxBinaryTimeout = conf.getLong("selenium.firefox.binary.timeout", 45);
                boolean enableFlashPlayer = conf.getBoolean("selenium.firefox.enable.flash", false);
                int loadImage = conf.getInt("selenium.firefox.load.image", 1);
                int loadStylesheet = conf.getInt("selenium.firefox.load.stylesheet", 1);
                FirefoxProfile profile = new FirefoxProfile();
                FirefoxBinary binary = new FirefoxBinary();
                profile.setPreference(FirefoxProfile.ALLOWED_HOSTS_PREFERENCE, allowedHost);
                profile.setPreference("dom.ipc.plugins.enabled.libflashplayer.so", enableFlashPlayer);
                profile.setPreference("permissions.default.stylesheet", loadStylesheet);
                profile.setPreference("permissions.default.image", loadImage);
                binary.setTimeout(TimeUnit.SECONDS.toMillis(firefoxBinaryTimeout));
                driver = new FirefoxDriver(binary, profile);
                break;
            case "chrome":
                driver = new ChromeDriver();
                break;
            case "safari":
                driver = new SafariDriver();
                break;
            case "opera":
                driver = new OperaDriver();
                break;
            case "phantomjs":
                driver = new PhantomJSDriver();
                break;
            case "remote":
                String seleniumHubHost = conf.get("selenium.hub.host", "localhost");
                int seleniumHubPort = Integer.parseInt(conf.get("selenium.hub.port", "4444"));
                String seleniumHubPath = conf.get("selenium.hub.path", "/wd/hub");
                String seleniumHubProtocol = conf.get("selenium.hub.protocol", "http");
                String seleniumGridDriver = conf.get("selenium.grid.driver", "firefox");
                String seleniumGridBinary = conf.get("selenium.grid.binary");
                switch(seleniumGridDriver) {
                    case "firefox":
                        capabilities = DesiredCapabilities.firefox();
                        capabilities.setBrowserName("firefox");
                        capabilities.setJavascriptEnabled(true);
                        capabilities.setCapability("firefox_binary", seleniumGridBinary);
                        System.setProperty("webdriver.reap_profile", "false");
                        driver = new RemoteWebDriver(new URL(seleniumHubProtocol, seleniumHubHost, seleniumHubPort, seleniumHubPath), capabilities);
                        break;
                    case "phantomjs":
                        capabilities = DesiredCapabilities.phantomjs();
                        capabilities.setBrowserName("phantomjs");
                        capabilities.setJavascriptEnabled(true);
                        capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, seleniumGridBinary);
                        driver = new RemoteWebDriver(new URL(seleniumHubProtocol, seleniumHubHost, seleniumHubPort, seleniumHubPath), capabilities);
                        break;
                    default:
                        LOG.error("The Selenium Grid WebDriver choice {} is not available... defaulting to FirefoxDriver().", driverType);
                        driver = new RemoteWebDriver(new URL(seleniumHubProtocol, seleniumHubHost, seleniumHubPort, seleniumHubPath), DesiredCapabilities.firefox());
                        break;
                }
                break;
            default:
                LOG.error("The Selenium WebDriver choice {} is not available... defaulting to FirefoxDriver().", driverType);
                driver = new FirefoxDriver();
                break;
        }
        LOG.debug("Selenium {} WebDriver selected.", driverType);
        driver.manage().timeouts().pageLoadTimeout(pageLoadWait, TimeUnit.SECONDS);
        driver.get(url);
    } catch (Exception e) {
        if (e instanceof TimeoutException) {
            LOG.debug("Selenium WebDriver: Timeout Exception: Capturing whatever loaded so far...");
            return driver;
        }
        cleanUpDriver(driver);
        throw new RuntimeException(e);
    }
    return driver;
}
Also used : WebDriver(org.openqa.selenium.WebDriver) RemoteWebDriver(org.openqa.selenium.remote.RemoteWebDriver) PhantomJSDriver(org.openqa.selenium.phantomjs.PhantomJSDriver) OperaDriver(com.opera.core.systems.OperaDriver) RemoteWebDriver(org.openqa.selenium.remote.RemoteWebDriver) DesiredCapabilities(org.openqa.selenium.remote.DesiredCapabilities) FirefoxProfile(org.openqa.selenium.firefox.FirefoxProfile) URL(java.net.URL) TimeoutException(org.openqa.selenium.TimeoutException) SafariDriver(org.openqa.selenium.safari.SafariDriver) FirefoxDriver(org.openqa.selenium.firefox.FirefoxDriver) FirefoxBinary(org.openqa.selenium.firefox.FirefoxBinary) ChromeDriver(org.openqa.selenium.chrome.ChromeDriver) TimeoutException(org.openqa.selenium.TimeoutException)

Example 82 with FirefoxDriver

use of org.openqa.selenium.firefox.FirefoxDriver in project SneakerBot by Penor.

the class Adidas method splash.

@SuppressWarnings("deprecation")
public void splash() {
    try {
        WebDriverWait wait = new WebDriverWait(driver, 60L);
        print("Loading webpage: " + url);
        driver.get(url);
        wait.until(new Function<WebDriver, Boolean>() {

            public Boolean apply(WebDriver d) {
                // + String.valueOf(((JavascriptExecutor) d).executeScript("return document.readyState")));
                return String.valueOf(((JavascriptExecutor) d).executeScript("return document.readyState")).equals("complete");
            }
        });
        // TODO: Get to splash page.
        boolean displayed = wait.until(x -> x.findElement(By.className("sk-fading-circle"))).isDisplayed();
        if (displayed) {
            print(proxy != null ? ("[" + proxy.getPassword() + ":" + proxy.getPort() + "] -> ") : "" + "waiting at splash page!");
            while (driver.findElements(By.className("g-recaptcha")).size() == 0) Thread.sleep(5000L);
            print(proxy != null ? ("[" + proxy.getPassword() + ":" + proxy.getPort() + "] -> ") : "" + "passed splash page!");
            driver.manage().getCookies().stream().forEach(c -> {
                if (c.getValue().contains("hmac")) {
                    hmac = c.getValue();
                    hmacExpiration = c.getExpiry();
                }
            });
            if (driver.findElements(By.className("g-recaptcha")).size() > 0)
                siteKey = driver.findElement(By.className("g-recaptcha")).getAttribute("data-sitekey");
            if (driver.findElements(By.id("flashproductform")).size() > 0)
                clientId = driver.findElement(By.id("flashproductform")).getAttribute("action").split("clientId=")[1];
            Date timeLeft = new Date(hmacExpiration.getTime() - System.currentTimeMillis());
            print("[Success] -> SiteKey: " + siteKey + " Client ID: " + clientId + " HMAC: " + hmac + " Time Left: " + timeLeft.getMinutes() + "m" + timeLeft.getSeconds() + "s");
        } else
            print("Error, Element displayed: " + displayed);
        if (manual) {
            FirefoxProfile profile = new FirefoxProfile();
            if (proxy != null) {
                profile.setPreference("network.proxy.type", 1);
                profile.setPreference("network.proxy.http", proxy.getAddress());
                profile.setPreference("network.proxy.http_port", proxy.getPort());
                profile.setPreference("network.proxy.ssl", proxy.getAddress());
                profile.setPreference("network.proxy.ssl_port", proxy.getPort());
            }
            // profile.setPreference("general.useragent.override", driver.set);
            WebDriver checkout = new FirefoxDriver(profile);
            for (Cookie cookie : driver.manage().getCookies()) checkout.manage().addCookie(cookie);
            checkout.get(driver.getCurrentUrl());
        } else
            while (!carted && hmacExpiration.getTime() > System.currentTimeMillis()) atc();
    } catch (Exception e) {
        String name = e.getClass().getName();
        print("[Exception] -> " + name);
        carted = true;
        if (name.equals("org.openqa.selenium.TimeoutException"))
            carted = false;
    } finally {
        print(carted ? "Closing driver, and ending" : "Failed, Retrying...");
        if (carted) {
            driver.quit();
            Thread.currentThread().interrupt();
        }
    }
}
Also used : WebDriver(org.openqa.selenium.WebDriver) FirefoxProfile(org.openqa.selenium.firefox.FirefoxProfile) WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait) ProxyConfig(com.machinepublishers.jbrowserdriver.ProxyConfig) CredentialObject(main.java.sneakerbot.loaders.Credentials.CredentialObject) Settings(com.machinepublishers.jbrowserdriver.Settings) ExpectedConditions(org.openqa.selenium.support.ui.ExpectedConditions) Date(java.util.Date) JBrowserDriver(com.machinepublishers.jbrowserdriver.JBrowserDriver) By(org.openqa.selenium.By) WebDriver(org.openqa.selenium.WebDriver) WebElement(org.openqa.selenium.WebElement) Random(java.util.Random) Type(com.machinepublishers.jbrowserdriver.ProxyConfig.Type) Function(java.util.function.Function) Builder(com.machinepublishers.jbrowserdriver.Settings.Builder) Level(java.util.logging.Level) TimeUnit(java.util.concurrent.TimeUnit) FirefoxDriver(org.openqa.selenium.firefox.FirefoxDriver) JavascriptExecutor(org.openqa.selenium.JavascriptExecutor) UserAgent(com.machinepublishers.jbrowserdriver.UserAgent) Cookie(org.openqa.selenium.Cookie) ProxyObject(main.java.sneakerbot.loaders.Proxy.ProxyObject) Cookie(org.openqa.selenium.Cookie) FirefoxDriver(org.openqa.selenium.firefox.FirefoxDriver) WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait) FirefoxProfile(org.openqa.selenium.firefox.FirefoxProfile) Date(java.util.Date)

Aggregations

FirefoxDriver (org.openqa.selenium.firefox.FirefoxDriver)82 WebDriver (org.openqa.selenium.WebDriver)61 WebElement (org.openqa.selenium.WebElement)47 Actions (org.openqa.selenium.interactions.Actions)18 FirefoxProfile (org.openqa.selenium.firefox.FirefoxProfile)10 File (java.io.File)8 ChromeDriver (org.openqa.selenium.chrome.ChromeDriver)7 FirefoxBinary (org.openqa.selenium.firefox.FirefoxBinary)6 RemoteWebDriver (org.openqa.selenium.remote.RemoteWebDriver)5 WebDriverWait (org.openqa.selenium.support.ui.WebDriverWait)5 URL (java.net.URL)4 Before (org.junit.Before)4 PhantomJSDriver (org.openqa.selenium.phantomjs.PhantomJSDriver)4 Test (org.junit.Test)3 DesiredCapabilities (org.openqa.selenium.remote.DesiredCapabilities)3 PublicAtsApi (com.axway.ats.common.PublicAtsApi)2 FileReader (java.io.FileReader)2 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 Date (java.util.Date)2