这是我想要检查的选择器是否存在于一个函数中,但它总是返回TRUE。这是我的代码:
        function func(selector){
        if(page.$(selector)) {
            return true
          } else {
            return false
          }
    }
console.log(func(#selectorexist))
console.log(func(#selectorNOTexist))其结果将是:
true
true发布于 2022-02-22 17:08:27
我的猜测是,因为page.$()返回一个Promise,所以当选择器找不到时,if语句会看到未解决的承诺,而不是null。试一试:
const checkForSelector = async (SELECTOR) => {
  const exists = await page.$(SELECTOR);
  return !!exists;
}另一种可能的方法是在try/catch块中确保页面有足够的时间加载其内容/动态生成标记:
const checkForSelector = async (SELECTOR) => {
  try {
    await page.waitForSelector(SELECTOR);
    return true;
  } catch (ERROR) {
    console.error(ERROR)
    
    return false;
  }
}如果您没有为木偶师指定一个navigationTimeout,它将自动等待最多300000毫秒的选择器,如果找不到它,自然会出错。
https://stackoverflow.com/questions/71162716
复制相似问题