Playwright执行操作前添加超时:selector隐藏判断while循环内加延迟方法
实现方案
你可以通过封装异步延迟函数的方式添加等待逻辑,具体实现如下:
方法1:添加固定时长延迟
先封装通用的sleep异步函数,在执行逻辑前调用即可:
// 封装延迟方法,入参为等待的毫秒数 function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } // 改造后的循环逻辑 while(await page.locator('.list-empty').isHidden()) { // 等待指定时长,示例为1秒,可根据实际情况调整 await sleep(1000); // do something }
方法2:更稳定的元素等待方案(推荐)
固定延迟的时长不好把控,建议搭配Playwright自带的元素等待API,在执行逻辑前先确认你要操作的元素处于可用状态,完全避免找不到selector的问题:
while(await page.locator('.list-empty').isHidden()) { // 等待你需要操作的目标元素可见,默认超时时间为30秒,可通过timeout参数自定义 await page.locator('你要操作的元素selector').waitFor({ state: 'visible' }); // do something }
如果有需要你也可以同时使用两种方案,先加固定延迟再等待元素就绪。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

