0

I created a new class called BrowserDriverFacory.java and I have following errors? Why can't I assign the drivers to set method?

package com.herokuapp.chatnwritecli.base;

import org.openqa.selenium.WebDriver;

import io.github.bonigarcia.wdm.WebDriverManager;

public class BrowserDriverFactory {
    
    private ThreadLocal<WebDriverManager> driver = new ThreadLocal<WebDriverManager>();
    private String browser;

    public BrowserDriverFactory(String browser) {
        this.browser = browser.toLowerCase();
    }
    
    public WebDriverManager createDriver() {
        // Create driver
        System.out.println("Create driver: " + browser);

        switch (browser) {
        case "chrome":
            WebDriverManager.chromedriver().setup();
            driver.set(new ChromeDriver());
            break;

        case "firefox":
            WebDriverManager.firefoxdriver().setup();
            driver.set(new FirefoxDriver());
            break;
................
default:
    .....................

return driver.get();
}
}

And I get the following errors, what is the cause? And how can I resolve this? I am a beginner in Selenium testing. enter image description here

bogdan-cmd
  • 45
  • 7

1 Answers1

0

First this you are trying to assign WebDriver type to WebDriverManager ThreadLocal which is incorrect, Threadlocal should be of type WebDriver

 private ThreadLocal<WebDriverManager> driver = new ThreadLocal<WebDriverManager>();

should be

private ThreadLocal<WebDriver> driver = new ThreadLocal<WebDriver>();

Also You should add the necessary imports

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;


public class BrowserDriverFactory {

    private ThreadLocal<WebDriver> driver = new ThreadLocal<>();
    private String browser;

    public BrowserDriverFactory(String browser) {
        this.browser = browser.toLowerCase();
    }

    public WebDriver createDriver() throws Exception {
        // Create driver
        System.out.println("Create driver: " + browser);

        switch (browser) {
            case "chrome":
                WebDriverManager.chromedriver().setup();
                driver.set(new ChromeDriver());
                break;

            case "firefox":
                WebDriverManager.firefoxdriver().setup();
                driver.set(new FirefoxDriver());
                break;

            default:
                throw new Exception("Specified browser implementation not found: " + browser);

        }
        return driver.get();
    }
}
Abhay Chaudhary
  • 1,763
  • 1
  • 8
  • 13