javascript - 似乎无法绕过此错误 - "element not interactable"

标签 javascript node.js automated-tests webdriver-io web-testing

所以我想做的就是通过 WebdriverIO 自动登录。

这是发生错误的 LoginPage 类,登录函数 - “element not interactable”

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
  }

}

登录函数的参数来自对测试文件的调用。

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);
  }
}

我相信我将 mocha 用于测试结构和报告者(规范和诱惑),如果我在某些方面有误,请纠正我。

我是自动化 Web 测试方面的新手,有人可以帮助我吗?

最佳答案

试试这个:

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(); 
  }
}

我什至建议编写一个方法来填充输入:

async fillLoginName(loginname){

await this.inputUsername.waitForExist();
await this.inputUsername.clearValue();
await this.inputUsername.setValue(loginname);

你在测试中调用了:

it("should successfully login", async () => {

  await Loginpage.fillLoginName("emailtest@test.com");

   // do the rest for password field and click login button

)}

关于javascript - 似乎无法绕过此错误 - "element not interactable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69542572/

相关文章:

python - 如何在没有类的情况下为python中的函数编写测试函数

javascript - 按住时 KeyDown 不会连续触发

java - 准确衡量跨环境的性能测试

javascript - 给定一个两位数的整数 n。返回其数字的总和。示例 对于 n = 29,输出应为 addTwoDigits(n) = 11

javascript - multer如何确定file.mimetype的值

javascript - Node.js API 在终端中返回 JSON,但在浏览器中不返回

node.js - 从sqlite3获取BIGINT值

testing - 单击按钮不起作用 - Katalon Studio

javascript - CSS :hover and active conflits - a specific case

javascript - 使用 Chokidar 监视特定的文件扩展名