Javascript 捕捉waitForSelector错误

Javascript 捕捉waitForSelector错误,javascript,node.js,automation,ui-automation,puppeteer,Javascript,Node.js,Automation,Ui Automation,Puppeteer,我使用一个名为的模块 我尝试在页面上等待可能不出现的选择器。在我采取的两种方法中,只有try-catch方法有效 尝试抓块-工作 try { await page.waitForSelector('.element'); //element appeared } catch (error) { //element did not appear } await page.waitForSelector('.element') .catch((error) =>

我使用一个名为的模块

我尝试在页面上等待可能不出现的选择器。在我采取的两种方法中,只有try-catch方法有效

尝试抓块-工作

try {
    await page.waitForSelector('.element');
    //element appeared
} catch (error) {
    //element did not appear
}
await page.waitForSelector('.element')
    .catch((error) => { 
        //element did not appear
    })
    .then(() => {
        //element appeared
    });
承诺链接-不起作用

try {
    await page.waitForSelector('.element');
    //element appeared
} catch (error) {
    //element did not appear
}
await page.waitForSelector('.element')
    .catch((error) => { 
        //element did not appear
    })
    .then(() => {
        //element appeared
    });
似乎
waitForSelector
确实返回了API中指出的承诺,但我不明白后一种方法为什么不起作用。它还是抛出了错误


有人遇到过同样的问题吗?

您应该重新构造承诺链接示例,以便在使用方法之前使用该方法

考虑以下示例,使用:

如果该元素不存在,则
失败
将记录到控制台。否则,如果元素确实存在,则输出将为
SUCCESS

另一方面,请看下面的示例,其中和是颠倒的:

// Incorrect Method
await page.waitForSelector('#example').catch(e => {
  console.log('FAIL');
}).then(() => {
  console.log('SUCCESS - not necessarily');
});
如果元素不存在,则
FAIL
将记录到控制台,但无论元素是否存在,
SUCCESS
也将写入控制台。这是因为记录
SUCCESS
是在尝试捕获错误后的下一步

使用before将允许您打印两条消息中的一条,并获得所需的结果