是否可在feature file中设置可选步骤?应对点击后偶现报错弹窗场景
实现方案
方案1:前端原生业务代码实现
核心逻辑是监听报错触发的时机,做超时容错判断。
- 点击主OK按钮后,先触发PageA的加载逻辑
- 启动一个最大等待时长的定时器(比如设置为5s,覆盖绝大多数报错触发的时间窗口),同时监听自定义的报错弹窗触发事件
- 只要监听到弹窗弹出,就给弹窗的OK按钮绑定一次点击回调,回调触发后再执行PageB的打开逻辑
- 如果等待时长超过5s还没有监听到报错弹窗,直接执行PageB的打开逻辑,跳过点击步骤
// 点击主OK按钮的事件回调 document.querySelector('#main-ok-btn').addEventListener('click', async () => { // 先打开Page A window.open('page-a-url', '_blank'); // 定义最大等待报错弹窗的时长,单位ms const MAX_WAIT_TIME = 5000; let errorPopupAppeared = false; // 监听报错弹窗弹出事件(适配你自身业务的报错触发逻辑即可) const errorListener = () => { errorPopupAppeared = true; // 给弹窗OK按钮绑定单次点击事件 const errorOkBtn = document.querySelector('.error-popup .ok-btn'); errorOkBtn.addEventListener('click', () => { // 点击后打开Page B window.open('page-b-url', '_blank'); }, { once: true }); }; window.addEventListener('pageAErrorTrigger', errorListener, { once: true }); // 超时判断,无报错则直接打开Page B setTimeout(() => { if (!errorPopupAppeared) { window.removeEventListener('pageAErrorTrigger', errorListener); window.open('page-b-url', '_blank'); } }, MAX_WAIT_TIME); })
方案2:UI自动化测试脚本实现(以Playwright为例,Selenium逻辑同理)
因为弹窗无唯一标识,所以用短间隔轮询+元素可见性判断的方式处理。
- 点击主OK按钮后,先等待PageA加载完成
- 开启最多N次轮询,每次间隔500ms,查询当前页面最上层的OK按钮是否存在且可点击
- 如果查询到符合条件的按钮,点击后再打开/跳转PageB
- 如果轮询结束未找到按钮,直接走PageB的操作逻辑
from playwright.sync_api import sync_playwright import time with sync_playwright() as p: browser = p.chromium.launch(headless=False) page = browser.new_page() page.goto("你的页面地址") # 点击主OK按钮 page.get_by_role("button", name="OK").click() # 等待Page A加载完成 page.wait_for_url("**/page-a*") # 轮询判断报错弹窗是否存在,最多轮询10次,每次500ms,总等待5s max_retry = 10 retry_count = 0 error_ok_clicked = False while retry_count < max_retry: # 匹配当前页面可见的OK按钮,取最后一个(最上层弹窗元素)避免匹配到其他同文本按钮 error_ok_btn = page.get_by_role("button", name="OK").last if error_ok_btn.is_visible(): error_ok_btn.click() error_ok_clicked = True break time.sleep(0.5) retry_count += 1 # 无论是否点击过报错弹窗的OK,都执行后续PageB的操作 page.wait_for_url("**/page-b*") # 后续PageB的操作逻辑
注意事项:如果是多窗口场景,需要先切换到PageA的窗口上下文再查询按钮,避免匹配到其他窗口的元素。
内容的提问来源于stack exchange,提问作者siri
相关产品推荐
相关产品推荐

