es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede llamar a “org.openqa.selenium.WebDriver.getTitle()” en la Clase de Objeto de Página utilizando Selenium y Page Factory.

Creó una clase base:


public loginpage() {
PageFactory.initElements(driver,this);
}

Luego se inicializaron los objetos de la página:

public String GetTitle() {
System.out.println("title111");
return driver.getTitle();

Luego se creó el caso de prueba:

@Test
public void title() {
String a= lp.GetTitle();
System.out.println(a);
}

Salida:

java.lang.NullPointerException: No se puede invocar "org.openqa.selenium.WebDriver.getTitle()" porque "this.driver" es nulo

Por favor, háganme saber qué está mal.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema en el código es que el driver no es inicializado en la clase loginpage. La PageFactory.initElements(driver, this) inicializa los elementos web definidos en la clase, pero no inicializa la variable de instancia driver. Para solucionar esto, es necesario pasar la instancia de driver a la clase loginpage y establecerla como la variable de instancia driver en el constructor.

    Por ejemplo, puedes modificar la clase loginpage de la siguiente manera:

    public class LoginPage {
        private WebDriver driver;
    
        public LoginPage(WebDriver driver) {
            this.driver = driver;
            PageFactory.initElements(driver, this);
        }
    
        public String getTitle() {
            System.out.println("title111");
            return driver.getTitle();
        }
    }
    

    Luego, en tu caso de prueba, necesitas pasar la instancia de driver al constructor de la clase loginpage.

    @Test
    public void title() {
        WebDriver driver = new ChromeDriver(); // o cualquier otro driver de navegador
        LoginPage lp = new LoginPage(driver);
        String a = lp.getTitle();
        System.out.println(a);
        driver.quit();
    }
    

    Esto debería solucionar el problema de NullPointerException.

Comments are closed.