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

155
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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