Version update to SELNEIUM 4.7.0 throwing NoSuchMethod Exception for Pagefactory

270 Views Asked by At

I'm changing my selenium porject from 3.141 to 4.7.0 but i'm seeing NoSuchElementException on PageFactory Initialization.

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.7.1</version>
        </dependency>
public WebElementsLogin(WebDriver driver) {
        this.driver = driver;
        PageFactory.initElements(this.driver, this);
    }
java.lang.NoSuchMethodError: 'void org.openqa.selenium.support.PageFactory.initElements(org.openqa.selenium.SearchContext, java.lang.Object)'
1

There are 1 best solutions below

1
On BEST ANSWER

Using selenium 4.7.1 and JDK 11:

       <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.7.1</version>
        </dependency>
public class Google {
    private WebDriver driver;
    @FindBy(name = "q")
    private WebElement searchField;
    
    public Google(WebDriver driver){
        this.driver = driver;
        PageFactory.initElements(driver, this);
    }

    public  void searchFor(String text){
        searchField.sendKeys(text);
        searchField.sendKeys(Keys.ENTER);
    }

    public void navigateTo(){
        driver.get("https://google.com");
    }

    public static void main(String[] args) {
        WebDriverManager.chromedriver().setup();
        WebDriver chrome = new ChromeDriver();
        Google google = new Google(chrome);
        google.navigateTo();
        google.searchFor("Selenium");

    }
}

Everything works as expected.

Correct this line:

PageFactory.initElements(this.driver, this);