Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

517
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Virtual assistant