所以我想做的就是通过 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/