Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

477
Vistas
Diferencia entre usar @FindBy y By; ¿Cuál podría ser la razón de este error?

Estoy automatizando https://www.zoho.com/login.html . Esta página tiene una sección de inicio de sesión dentro de un marco. Cuando cambio a través de diferentes marcos y busco mi campo Correo electrónico/Teléfono (sección Iniciar sesión), puedo encontrarlo y luego usar el bloque de trabajo (abajo) pero no puedo usar el código similar (también a continuación) la única diferencia entre dos bloques es como he identificado mi elemento userNameInputBox.

//Esto esta funcionando

 List<WebElement> iframeElements = driver.findElements(By.tagName("iframe")); int nFrames = iframeElements.size(); //Switching frame to go to login frame for (int i=0; i<=nFrames ; i++) { System.out.println("nFrames: " +nFrames); driver.switchTo().frame(i); if (driver.findElement(By.name("lid")).isDisplayed()){ driver.findElement(By.name("lid")).sendKeys("myuserName1"); }}

Sin embargo, si uso esto (debajo del código) no funciona y en su lugar me da NullPointerException en la línea donde hago clic en mi entrada de nombre de usuario en el campo de nombre de usuario.

///Esto no está funcionando

 //Elements @FindBy(name="lid") WebElement userNameInput; //Switching frame to go to login frame for (int i=0; i<=nFrames ; i++) { System.out.println("nFrames: " +nFrames); driver.switchTo().frame(i); if (driver.findElement(By.name("lid")).isDisplayed()){ userNameInput.click(); //clicking the inputBox userNameInput.sendKeys("myuserName"); //Sendingkeys into }}

¿Alguien puede explicar cuál podría ser la razón de tal anomalía? O señalar lo que me he perdido? Quiero usar @FindBy para WebElement.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La etiqueta @FindBy está diseñada para funcionar con el modelo de objeto de página. Para usarlo, debe inicializar el objeto de la página con PageFactory para que los campos se inicialicen y luego el controlador web los "encuentre".

Consulte https://github.com/SeleniumHQ/selenium/wiki/PageFactory para obtener la documentación al respecto.

Entonces, antes de intentar usar el campo userNameInput , deberá tener algún tipo de línea como

PageFactory.initElements(driver, page); (donde la page var es una clase que usa la anotación @FindBy .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda