首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:当选择器在使用木偶时存在时,无法找到元素匹配选择器

错误:当选择器在使用木偶时存在时,无法找到元素匹配选择器
EN

Stack Overflow用户
提问于 2022-03-06 06:17:47
回答 1查看 323关注 0票数 0

(节点:4067) UnhandledPromiseRejectionWarning:错误:错误:找不到元素匹配选择器"#r1-3 > div > h2 > a“

但是当我在搜索结果页面的检查元素中输入document.querySelector('#r1-3 > div > h2 > a').click()时,它就通过了。所以选择器是存在的。

代码语言:javascript
复制
const puppeteer = require('puppeteer');

const url = "https://duckduckgo.com/"

async function run()
{
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();
    await page.goto(url);
    
    await page.type('#search_form_input_homepage', 'stackoverflow');

    const promise3 = new Promise((resolve, reject) =>
    {        
        page.$eval('#r1-3 > div > h2 > a', el => el.click());
        page.waitForNavigation();
    });      

    const [response] = await Promise.all([
        page.waitForNavigation(),
        page.click('#search_button_homepage'),
        page.waitForNavigation(),
        promise3
      ]).catch(e => console.log(e));
}

run();
EN

回答 1

Stack Overflow用户

发布于 2022-03-06 07:03:59

在某个地方,我的承诺观念出了问题。让它只使用异步/等待。

代码语言:javascript
复制
const puppeteer = require('puppeteer');
var sleep = require('sleep');

const url = "https://duckduckgo.com/"

async function run()
{
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();
    await page.setViewport({width: 1366, height: 768})
    await page.goto(url);    
    await page.$eval('#search_form_input_homepage', el => el.value = 'stackoverflow');    
    await page.click('#search_button_homepage');    
    await page.waitForNavigation();
    sleep.sleep(5);
    await page.$eval('#r1-0 > div > h2 > a', el => el.click());
}

run();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71368088

复制
相关文章

相似问题

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