• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

414
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.

about 3 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 .

about 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error