首页 > 解决方案 > Puppeteer - Handlin page.waitForSelector() 失败

问题描述

如果page.waitForSelector()失败,则会引发错误。因为这是在异步函数中运行的,如果直接导致代码的捕获部分。

如果失败,是否有可能在page.waitForSelector()下面的一行中执行代码?

像这样(伪代码):

if ( (await page.waitForSelector('.test') == null) { //do X}

从 API:

如果选择器在等待超时毫秒后没有出现,该函数将抛出。

我如何管理在同一个代码块中的抛出,就好像函数会成功一样?

标签: node.jsasync-awaitpuppeteer

解决方案


你为什么不抓住page.waitForSelector抛出的错误并在之后采取类似这样的行动 -

(async() => {

     try {
        page.waitForSelector(selector);
     } catch(error) {
       // do as you wish with this error and then do your next actions

           try {
                page.goto('someUrl');
           } catch(error) {
               throw new Error(error);
           }
     }

})

推荐阅读