top of page

Dealing with multiple browsers in selenium

  • Writer: khyati sehgal
    khyati sehgal
  • Jun 7, 2018
  • 2 min read

As technology grows we have to deal with multiple things. Things which are similar in behaviour and functioning but still different. One of the case comes up when we have to deal with multiple browser in selenium.

Here is the code snippet which can help you to initiate a browser seamlessly when added in project utility.

How to work with browsers other than default(Firefox) browser?

public static WebDriver getDriver() throws InterruptedException, IOException {
    OS = System.getProperty("os.name").toLowerCase(); //Check for Operating system name
    WebDriver driver = ThreadDriver.get();
    String workingDir = System.getProperty("user.dir");
    if (driver == null) //Check for default browser
    {
        if (browserType.equals("firefox")) {
            if (isWindows()) {
                //This will set the property in the OS/System you are working on					System.setProperty("webdriver.gecko.driver", workingDir + "//driver//geckodriver.exe");
            } else if (isMac()) {
                System.setProperty("webdriver.gecko.driver", workingDir + "//driver//geckodriver.exe");
            } else if (isLinux()) {
                //Setting capabilities to handle functioning like JS handling, alerts, certificates, etc 					System.setProperty("webdriver.gecko.driver", "/usr/bin/geckodriver");
            }
            DesiredCapabilities capabilities = DesiredCapabilities.firefox();
            capabilities.setCapability("marionette", true);
            capabilities.setBrowserName("firefox");
            capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
            driver = new EventFiringWebDriver(new FirefoxDriver());
            FirefoxProfile profile = new FirefoxProfile();
            profile.setAssumeUntrustedCertificateIssuer(false);
            profile.setAcceptUntrustedCertificates(false);
            profile.setPreference("dom.disable_beforeunload", true);
            profile.setPreference("javascript.enabled", true);
            ThreadDriver.set(driver);
            getDriver().manage().timeouts().implicitlyWait(30000, TimeUnit.MILLISECONDS);
            wait = new WebDriverWait(driver, 30);
        }
        //Repeat the same for other browsers
        if (browserType.equals("chrome")) {
            if (isWindows()) {
                System.setProperty("webdriver.chrome.driver", workingDir + "//driver//chromedriver.exe");
            } else if (isMac()) {
                System.setProperty("webdriver.chrome.driver", workingDir + "//driver//chromedriver");
            } else if (isLinux()) {
                System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
            }
            DesiredCapabilities capabilities = DesiredCapabilities.chrome();
            ChromeOptions options = new ChromeOptions();
            options.addArguments("test-type");
            options.addArguments("--start-maximized");
            options.addArguments("--disable-web-security");
            options.addArguments("--allow-running-insecure-content");
            options.addArguments("--js-flags=--expose-gc");
            options.addArguments("--enable-precise-memory-info");
            options.addArguments("--disable-popup-blocking");
            options.addArguments("--disable-default-apps");
            options.addArguments("test-type=browser");
            options.addArguments("disable-infobars");
            options.addArguments("--incognito");
            options.addArguments("--use-fake-ui-for-media-stream");
            capabilities.setCapability("chrome.binary", "./src//lib//chromedriver");
            //Setting multiple capabilities as per the requirements				capabilities.setCapability(ChromeOptions.CAPABILITY, options);
            driver = new ChromeDriver(options);

            ThreadDriver.set(driver);
            if (isMac()) {
                maximizeScreen();
            }
            getDriver().manage().timeouts().implicitlyWait(30000, TimeUnit.MILLISECONDS);
            wait = new WebDriverWait(driver, 30);
        }
        if (browserType.equals("ie")) {
            System.setProperty("webdriver.ie.driver", workingDir + "//driver//IEDriverServer.exe");
            driver = new EventFiringWebDriver(new InternetExplorerDriver());
            ThreadDriver.set(driver);
            getDriver().manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
            wait = new WebDriverWait(driver, 30);
        }
        if (browserType.equals("safari")) {
            System.setProperty("webdriver.safari.driver", "/driver/SafariDriver.safariextz");
            System.setProperty("webdriver.safari.noinstall", "true");
            DesiredCapabilities desiredCapabilities = DesiredCapabilities.safari();
            SafariOptions safariOptions = new SafariOptions();
            safariOptions.setUseCleanSession(true);
            safariOptions.getUseCleanSession();
            safariOptions.setUseCleanSession(true);
            desiredCapabilities.setCapability(SafariOptions.CAPABILITY, safariOptions);
            driver = new EventFiringWebDriver(new SafariDriver());
            ThreadDriver.set(driver);
            getDriver().manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
            wait = new WebDriverWait(driver, 30);
        }
    }
    return driver;
}

Comments


bottom of page