mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-23 13:13:09 +00:00
feat: 重构前端项目结构并优化代码
refactor: 迁移前端资源文件至web目录 feat: 新增多种图标资源 style: 统一代码风格和格式化配置 docs: 更新README和文档说明 chore: 更新依赖和配置文件 fix: 修复部分类型定义和枚举 perf: 优化路由和组件加载逻辑
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from typing import Dict, Any
|
||||
from playwright.sync_api import Page, expect
|
||||
|
||||
|
||||
class BasePage:
|
||||
def __init__(self, page: Page) -> None:
|
||||
self.page = page
|
||||
|
||||
def login(self, test_data: Dict[str, Any]) -> bool:
|
||||
# 设置页面加载超时
|
||||
self.page.set_default_timeout(30000)
|
||||
|
||||
# 访问登录页面并等待页面完全加载
|
||||
self.page.goto(test_data["url"])
|
||||
self.page.wait_for_load_state("networkidle") # 等待网络活动空闲
|
||||
|
||||
# 等待用户名输入框可见且可交互
|
||||
username_input = self.page.get_by_role("textbox", name="用户名")
|
||||
username_input.wait_for(state="visible", timeout=10000)
|
||||
username_input.click()
|
||||
username_input.fill(test_data["username"])
|
||||
|
||||
# 等待密码输入框可见且可交互
|
||||
password_input = self.page.get_by_role("textbox", name="请输入登录密码")
|
||||
password_input.wait_for(state="visible", timeout=10000)
|
||||
password_input.click()
|
||||
password_input.fill(test_data["password"])
|
||||
|
||||
# 等待登录按钮可见且可交互
|
||||
login_button = self.page.get_by_role("button", name="登录")
|
||||
login_button.wait_for(state="visible", timeout=10000)
|
||||
# 使用click()方法本身会等待元素可交互,不需要单独检查enabled状态
|
||||
login_button.click()
|
||||
|
||||
# 等待登录后页面加载和弹窗出现
|
||||
self.page.wait_for_load_state("networkidle")
|
||||
|
||||
# 等待SaaS系统使用引导文本出现
|
||||
self.page.wait_for_selector("text=SaaS系统使用引导", timeout=15000)
|
||||
expect(self.page.get_by_text("SaaS系统使用引导")).to_be_visible()
|
||||
expect(self.page.get_by_text("登录成功")).to_be_visible()
|
||||
|
||||
# 等待关闭按钮可见且可交互
|
||||
close_button = self.page.get_by_role("button", name="Close")
|
||||
close_button.wait_for(state="visible", timeout=10000)
|
||||
# 使用click()方法本身会等待元素可交互,不需要单独检查enabled状态
|
||||
close_button.click()
|
||||
|
||||
# 关闭登录成功提示
|
||||
self.page.locator(".el-icon.el-notification__closeBtn > svg").click()
|
||||
|
||||
# 等待弹窗关闭
|
||||
self.page.wait_for_selector("text=SaaS系统使用引导", state="hidden", timeout=5000)
|
||||
|
||||
return True
|
||||
|
||||
def logout(self) -> bool:
|
||||
# 等待用户名显示
|
||||
expect(self.page.get_by_text("涛")).to_be_visible(timeout=20000)
|
||||
self.page.get_by_text("涛").click()
|
||||
# 等待退出登录选项显示
|
||||
self.page.wait_for_selector("text=退出登录", state="visible", timeout=10000)
|
||||
|
||||
expect(self.page.get_by_text("退出登录")).to_be_visible(timeout=10000)
|
||||
self.page.get_by_text("退出登录").click()
|
||||
# 等待确认对话框显示
|
||||
self.page.wait_for_selector("text=确定要退出登录吗?", state="visible", timeout=10000)
|
||||
|
||||
expect(self.page.get_by_text("确定要退出登录吗?")).to_be_visible(timeout=10000)
|
||||
expect(self.page.get_by_role("button", name="确认")).to_be_visible(timeout=10000)
|
||||
self.page.get_by_role("button", name="确认").click()
|
||||
# 等待退出成功提示显示
|
||||
self.page.wait_for_selector("text=退出成功", state="visible", timeout=10000)
|
||||
|
||||
expect(self.page.get_by_text("退出成功")).to_be_visible(timeout=10000)
|
||||
# 关闭退出成功提示
|
||||
self.page.get_by_role("img").nth(4).click()
|
||||
|
||||
return True
|
||||
Reference in New Issue
Block a user