首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择者总是返回真实的傀儡

选择者总是返回真实的傀儡
EN

Stack Overflow用户
提问于 2022-02-17 17:24:40
回答 1查看 29关注 0票数 -2

这是我想要检查的选择器是否存在于一个函数中,但它总是返回TRUE。这是我的代码:

代码语言:javascript
运行
复制
        function func(selector){
        if(page.$(selector)) {
            return true
          } else {
            return false
          }
    }
console.log(func(#selectorexist))
console.log(func(#selectorNOTexist))

其结果将是:

代码语言:javascript
运行
复制
true
true
EN

Stack Overflow用户

发布于 2022-02-22 17:08:27

我的猜测是,因为page.$()返回一个Promise,所以当选择器找不到时,if语句会看到未解决的承诺,而不是null。试一试:

代码语言:javascript
运行
复制
const checkForSelector = async (SELECTOR) => {
  const exists = await page.$(SELECTOR);
  return !!exists;
}

另一种可能的方法是在try/catch块中确保页面有足够的时间加载其内容/动态生成标记:

代码语言:javascript
运行
复制
const checkForSelector = async (SELECTOR) => {
  try {
    await page.waitForSelector(SELECTOR);

    return true;
  } catch (ERROR) {
    console.error(ERROR)
    
    return false;
  }
}

如果您没有为木偶师指定一个navigationTimeout,它将自动等待最多300000毫秒的选择器,如果找不到它,自然会出错。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71162716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档