木偶师找不到选择器 [英] Puppeteer can't find selector

查看:15
本文介绍了木偶师找不到选择器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正尝试使用Puppeteer进行一些Web抓取,但脚本似乎找不到我正在寻找的选择器。基本上是这样的代码:

const puppeteer = require('puppeteer');

let scrape = async () => {
const year = 18;

const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('https://cobbcounty.org/index.php?option=com_wrapper&view=wrapper&Itemid=2008');
await page.waitFor(5000);
var id = '';
for(i=0;i<10000;i++){
    id = i;
    await page.click('#txtCase');
    await page.keyboard.type(year + '-P-' + id);
    await page.select('#lstDoc','Estate');
}
}

scrape().then((value) => {
console.log('script ended');
});

给出此错误:

(node:31125) UnhandledPromiseRejectionWarning: AssertionError 
[ERR_ASSERTION]: No node found for selector: #txtCase

据我所知,#txtCase是页面上的实际选择器,所以我不知道为什么木偶师找不到它。如果有人能给我解释一下我做错了什么,那将会很有帮助。

推荐答案

据我所知,#txtCase是页面上的实际选择器,所以我不知道为什么木偶师找不到它。

尝试加载页面并使用控制台查找该元素。

document.querySelector('#txtCase')
null

它不在那里。我知道当您右键单击检查该文本字段时可以看到它,但它嵌套在IFRAME中。您需要访问该框架,然后找到按钮,然后单击它。

const frame = await page.frames().find(f => f.name() === 'iframe');
const button = await frame.$('#txtCase');
button.click();

这篇关于木偶师找不到选择器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆