/** * 登录页面对象 * 封装登录相关的操作 */ import { Page, expect } from '@playwright/test'; import { BasePage } from './BasePage'; export class LoginPage extends BasePage { constructor(page: Page) { super(page); } /** * 访问首页 */ async visitHomePage(): Promise { await this.goto(this.config.env.baseUrl); await expect(this.page.getByRole('button', { name: 'Log in' })).toBeVisible(); } /** * 点击登录按钮 */ async clickLoginButton(): Promise { await this.page.getByRole('button', { name: 'Log in' }).click(); await expect(this.page.getByRole('textbox', { name: 'Email Address' })).toBeVisible(); } /** * 输入登录凭证并登录 */ async login(email: string, password: string): Promise { await this.page.getByRole('textbox', { name: 'Email Address' }).click(); await this.page.getByRole('textbox', { name: 'Email Address' }).fill(email); await this.page.getByRole('textbox', { name: 'Psssword' }).click(); await this.page.getByRole('textbox', { name: 'Psssword' }).fill(password); await this.page.getByRole('button', { name: 'Log in' }).click(); await expect(this.page.getByRole('link').filter({ hasText: '学生工作台' })).toBeVisible(); } /** * 完整登录流程 */ async performLogin(): Promise { await this.visitHomePage(); await this.clickLoginButton(); await this.login(this.config.credentials.email, this.config.credentials.password); } }