有些项目使用的是浏览器自带的alter弹框,无法定位获取。需要监听事件才能获取弹框信息,代码如下。
def __init__(self):
# 注册监听事件
self.alert_text = None
self.page.on("dialog", self.handle_dialog)
def handle_dialog(self, dialog):
'''
监听active弹框功能提供调用
'''
self.alert_text = dialog.message
dialog.accept()
def get_alert_errortext(self):
'''
登录页面输入弹框提示
'''
with allure.step('提示弹框'):
return self.alert_text
调用时,增加弹框监听等待时间,否则可能报错
def test_failed_login(self,setup, username, password):
allure.dynamic.parameter(name='参数信息', value={'loginName': username, 'password': password})
login_page = setup
login_page.open_login_page()
login_page.login(username, password)
try:
login_page.page.wait_for_event("dialog", timeout=5000)
except Exception as e:
pytest.fail(f"未检测到弹窗: {e}")
error_text = login_page.get_alert_errortext()
assert error_text, "登录失败,请检查您的用户名或密码是否填写正确。"