test/framework/business/login_page.py

54 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from framework.core.base_ui import BaseUI
from framework.config.settings import Config
from framework.core.logger import get_logger
import time
logger = get_logger("LoginPage")
class LoginPage(BaseUI):
# --- 元素定位器 ---
USERNAME_INPUT = "input[placeholder*='账号'], #account"
PASSWORD_INPUT = "input[placeholder*='密码'], #password"
LOGIN_BUTTON = "button.loginBtn"
SUCCESS_INDICATOR = ".ant-layout-sider, .user-name"
def __init__(self, headless=False):
super().__init__(headless=headless)
def login(self, username, password):
"""执行登录流程"""
# 直接使用 Config.LOGIN_URL
login_url = Config.LOGIN_URL
self.navigate(login_url)
logger.info("等待登录页面加载...")
self.wait_for_selector(self.USERNAME_INPUT)
self.fill(self.USERNAME_INPUT, username)
self.fill(self.PASSWORD_INPUT, password)
logger.info("正在点击登录按钮...")
time.sleep(1)
self.click(self.LOGIN_BUTTON)
logger.info("登录请求已发送,等待进入系统...")
try:
# 1. 强制等待关键 UI 元素出现 (证明已经跳过 SSO 到了主页)
self.page.wait_for_selector(self.SUCCESS_INDICATOR, timeout=10000)
# 2. 二次确认 URL 是否已经离开 SSO回到业务主域名
if "robogo-fat" in self.page.url:
logger.info(f"🎉 登录流程圆满成功!进入主系统 URL: {self.page.url}")
return True
except Exception as e:
logger.warning(f"等待主站 UI 加载超时 (可能是 SSO 跳转慢): {e}")
# 兜底:如果还是在 login 或 sso 页面则失败
if "/login" in self.page.url or "sso" in self.page.url:
self.page.screenshot(path="login_failed.png")
logger.error(f"❌ 登录认证失败,目前停留在: {self.page.url}")
return False
return True