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

148
Views
Parece que no puedo evitar este error: "elemento no interactuable"

Entonces, todo lo que quiero hacer es automatizar un inicio de sesión a través de WebdriverIO.

Esta es la clase LoginPage donde ocurre el error, función de inicio de sesión - "elemento no interactuable"

 class LoginPage { get inputUsername() { const username = $("#username"); username.waitForClickable(); return username; } get inputPassword() { const password = $("#current-password"); password.waitForClickable(); return password; } get btnSubmit() { const submitButton = $(".button.button--primary.button--l"); submitButton.waitForClickable(); return submitButton; } async login(username, password) { await this.inputUsername.setValue(username); //<--Throws error await this.inputPassword.setValue(password); //<--Throws error await this.btnSubmit.click(); //<--Not sure if throws error } }

Los parámetros de la función de inicio de sesión provienen de su llamada en el archivo de prueba.

 describe("login", () => { it("should successfully login", async () => { await browser.maximizeWindow(); await LoginPage.open(); //<--Opens the login page on the browser await LoginPage.login( "emailtest@test.com", process.env.PASSWORD ); await expect(browser).toHaveUrl(process.env.CLIENT_AREA_URL); } }

Creo que estoy usando mocha para la estructura de la prueba y para los reporteros (spec y allure), corrígeme si me equivoco en algo.

Soy un poco nuevo en las pruebas web automatizadas, ¿alguien puede ayudarme con esto?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Parece que waitForClickable no funciona en este caso. ¿Podría moverlo a la función asíncrona?

Basado en su código:

 get inputUsername() { return $("#username"); } async login(username, password) { await this.inputUsername.waitForClickable(); await this.inputUsername.setValue(username); ... }

wait... y set... se pueden mover a browser.addCommand() en wdio.conf para tener un código más limpio.

about 4 years ago · Juan Pablo Isaza Report

0

Prueba esto:

 class LoginPage { get inputUsername() { return $("#username"); get inputPassword() {return $("#current-password"); get btnSubmit() {return $(".button.button--primary.button--l"); async login(username, password) { await this.inputUsername.waitForClickable(); await this.inputUsername.setValue(username); await this.password.waitForClickable(); await this.inputPassword.setValue(password); await this.submitButton.waitForClickable(); await this.submitButton.click(); } }

Recomendaría escribir incluso un método para completar la entrada:

 async fillLoginName(loginname){ await this.inputUsername.waitForExist(); await this.inputUsername.clearValue(); await this.inputUsername.setValue(loginname);

}

y llamaste solo en tu prueba como:

 it("should successfully login", async () => { await Loginpage.fillLoginName("emailtest@test.com"); // do the rest for password field and click login button )}
about 4 years ago · Juan Pablo Isaza Report

0

Hay un par de cosas que podrían estar causando esto:

  • La página tiene una ventana "modal" de cookies que aparece. Este modal puede bloquear la entrada de texto en el formulario de inicio de sesión, que es de donde proviene el mensaje "elemento no interactuable". Si este es el caso, también verá un mensaje adicional que indica que otro elemento recibió un clic.
  • La página de inicio de sesión carga contenido a través de llamadas a la API de JavaScript. WebdriverIO/Selenium es bueno para esperar las cargas normales de la página, pero cuando carga contenido a través de JavaScript, no sabe esperar eso. Tienes el nombre de username.waitForClickable(); llamadas, pero creo que es posible que deban await username.waitForClickable(); trabajar.
about 4 years ago · Juan Pablo Isaza 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
Show me some job opportunities
There's an error!