From 7c5a4c5de7c94d16f79a54a38258f0e769322ff5 Mon Sep 17 00:00:00 2001 From: xst Date: Wed, 15 Jul 2026 10:52:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Playwright=20API=20camelCase=20=E2=86=92?= =?UTF-8?q?=20snake=5Fcase=20(Python=20=E7=89=88)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - getByPlaceholder → get_by_placeholder - getByRole → get_by_role - getByText → get_by_text - getByTestId → get_by_test_id --- tests/web/conftest.py | 6 +++--- tests/web/pages/base_page.py | 6 +++--- tests/web/pages/components/navbar.py | 6 +++--- tests/web/pages/login_page.py | 6 +++--- tests/web/save_auth.py | 4 ++-- tests/web/test_login/test_login.py | 8 ++++---- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/tests/web/conftest.py b/tests/web/conftest.py index 5b9f737..90cd5ae 100644 --- a/tests/web/conftest.py +++ b/tests/web/conftest.py @@ -138,9 +138,9 @@ def ensure_login(web_config, page, config): # ── skip_login: false,执行 UI 登录(可能有验证码,会失败) ── page.goto(f"{base_url}/login") - page.getByPlaceholder("请输入用户名").fill(account["phone"]) - page.getByPlaceholder("请输入密码").fill(account["password"]) - page.getByRole("button", name="登录").click() + page.get_by_placeholder("请输入用户名").fill(account["phone"]) + page.get_by_placeholder("请输入密码").fill(account["password"]) + page.get_by_role("button", name="登录").click() # 如果有图形验证码,这里会超时 try: diff --git a/tests/web/pages/base_page.py b/tests/web/pages/base_page.py index 7b6546e..47236fe 100644 --- a/tests/web/pages/base_page.py +++ b/tests/web/pages/base_page.py @@ -6,8 +6,8 @@ Usage: class LoginPage(BasePage): def __init__(self, page): super().__init__(page) - self.phone_input = page.getByPlaceholder("请输入用户名") - self.login_btn = page.getByRole("button", name="登录") + self.phone_input = page.get_by_placeholder("请输入用户名") + self.login_btn = page.get_by_role("button", name="登录") """ from datetime import datetime @@ -38,7 +38,7 @@ class BasePage: def wait_for_text(self, text: str, timeout_ms: Optional[int] = None) -> None: """等待页面上出现指定文本。""" - expect(self.page.getByText(text)).to_be_visible(timeout=timeout_ms or self.timeout) + expect(self.page.get_by_text(text)).to_be_visible(timeout=timeout_ms or self.timeout) # ── 通用操作 ── diff --git a/tests/web/pages/components/navbar.py b/tests/web/pages/components/navbar.py index 88c5dbb..f441fc6 100644 --- a/tests/web/pages/components/navbar.py +++ b/tests/web/pages/components/navbar.py @@ -21,7 +21,7 @@ class NavBar(BasePage): super().__init__(page) # ⚠️ 以下定位器需要根据实际 DOM 调整 self.sidebar = page.locator(".ant-layout-sider") - self.logout_btn = page.getByText("退出登录") + self.logout_btn = page.get_by_text("退出登录") def go_to(self, menu_name: str) -> None: """点击侧边栏菜单项展开/跳转。 @@ -29,7 +29,7 @@ class NavBar(BasePage): Args: menu_name: 菜单名称文本(如 "运输管理"、"基础信息") """ - menu_item = self.page.getByText(menu_name).first + menu_item = self.page.get_by_text(menu_name).first self.click_when_ready(menu_item) def go_to_submenu(self, parent_menu: str, sub_menu: str) -> None: @@ -40,7 +40,7 @@ class NavBar(BasePage): sub_menu: 子菜单文本(如 "运单管理") """ self.go_to(parent_menu) - sub_item = self.page.getByText(sub_menu).first + sub_item = self.page.get_by_text(sub_menu).first self.click_when_ready(sub_item) def logout(self) -> None: diff --git a/tests/web/pages/login_page.py b/tests/web/pages/login_page.py index bae2bb3..2939882 100644 --- a/tests/web/pages/login_page.py +++ b/tests/web/pages/login_page.py @@ -18,9 +18,9 @@ class LoginPage(BasePage): def __init__(self, page: Page): super().__init__(page) # ── 定位器声明 ── - self.username_input = page.getByPlaceholder("请输入用户名") - self.password_input = page.getByPlaceholder("请输入密码") - self.login_btn = page.getByRole("button", name="登录") + self.username_input = page.get_by_placeholder("请输入用户名") + self.password_input = page.get_by_placeholder("请输入密码") + self.login_btn = page.get_by_role("button", name="登录") self.error_tip = page.locator(".ant-form-item-explain-error") def login(self, phone: str, password: str, expect_success: bool = True) -> None: diff --git a/tests/web/save_auth.py b/tests/web/save_auth.py index 2a87ebc..0247786 100644 --- a/tests/web/save_auth.py +++ b/tests/web/save_auth.py @@ -90,8 +90,8 @@ def main(): page.goto(login_url) # ── 填入账号密码 ── - page.getByPlaceholder("请输入用户名").fill(account["phone"]) - page.getByPlaceholder("请输入密码").fill(account["password"]) + page.get_by_placeholder("请输入用户名").fill(account["phone"]) + page.get_by_placeholder("请输入密码").fill(account["password"]) print(f"👤 已填入账号: {account['phone']}(角色: {args.role})") print("📝 请在浏览器中手动完成验证码并点击登录...") print(" (登录成功后脚本会自动检测并保存)\n") diff --git a/tests/web/test_login/test_login.py b/tests/web/test_login/test_login.py index 214cef2..6bdba98 100644 --- a/tests/web/test_login/test_login.py +++ b/tests/web/test_login/test_login.py @@ -64,15 +64,15 @@ class TestLoginPageDirect: """验证登录页可直接访问并正常渲染。""" page.goto(f"{web_config['base_url']}/login") # 登录页应存在用户名输入框 - assert page.getByPlaceholder("请输入用户名").is_visible() + assert page.get_by_placeholder("请输入用户名").is_visible() @pytest.mark.p1 def test_login_page_elements(self, page: Page, web_config): """验证登录页所有关键元素存在。""" page.goto(f"{web_config['base_url']}/login") - assert page.getByPlaceholder("请输入用户名").is_visible() - assert page.getByPlaceholder("请输入密码").is_visible() - assert page.getByRole("button", name="登录").is_visible() + assert page.get_by_placeholder("请输入用户名").is_visible() + assert page.get_by_placeholder("请输入密码").is_visible() + assert page.get_by_role("button", name="登录").is_visible() @pytest.mark.p1 def test_double_login_session_redirect(self, page: Page, web_config, ensure_login):