You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright自动化测试入门:LoginPage不是构造函数错误排查求助

Playwright自动化测试代码错误排查

错误原因及修复方案

1. 模块导入方式不匹配

LoginPage.js使用默认导出(export default LoginPage),但测试文件login.spec.js误用了命名导入(import { LoginPage } from '../pages/LoginPage'),导致无法正确识别构造函数。

修复:将测试文件的导入语句改为默认导入:

import {test, expect } from '@playwright/test';
import LoginPage from '../pages/LoginPage'; // 去掉包裹LoginPage的大括号

2. 元素定位变量名不匹配

LoginPage类构造函数中定义的用户名输入框变量是this.loginInput,密码输入框是this.passwordInput,但logintoWorld方法里错误使用了未定义的this.username和this.password,会导致填充元素时找不到对应选择器。

修复:修改logintoWorld方法中的变量名,与构造函数保持一致:

async logintoWorld(){
    await this.page.fill(this.loginInput, "manager1"); // 改为loginInput
    await this.page.fill(this.passwordInput, "myPassword"); // 改为passwordInput
    await this.page.click(this.loginButton);
}

修复后的完整代码

LoginPage.js

class LoginPage{
    constructor(page){
        this.page=page;
        this.loginInput = 'input[name="username"]';
        this.passwordInput = 'input[name="password"]';
        this.loginButton = '.MuiLoadingButton-root';
    }

    async logintoWorld(){
        await this.page.fill(this.loginInput, "manager1");
        await this.page.fill(this.passwordInput, "myPassword");
        await this.page.click(this.loginButton);
    }
}

export default LoginPage; 

login.spec.js

import {test, expect } from '@playwright/test';
import LoginPage from '../pages/LoginPage';

test('Login to testingworld', async ({ page }) => {
  await page.goto('https://mytestingworld.com/auth/login');
  const myLogin = new LoginPage(page);
  await myLogin.logintoWorld();
});

内容的提问来源于stack exchange,提问作者RRJoshi Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 03:04:51