Кукловод не может найти селектор - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь немного поковыряться в Интернете с помощью Puppeteer, но сценарий, похоже, не может найти искатель, который я ищу.По сути, этот код:

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 является фактическим селектором на странице, поэтому я незнаю, почему кукловод не может найти его.Если кто-то может объяснить мне, что я делаю неправильно, это будет очень полезно.

1 Ответ

0 голосов
/ 29 мая 2018

Насколько я могу судить, #txtCase является фактическим селектором на странице, поэтому я не знаю, почему кукловод не может его найти.

Попробуйте загрузить страницуи используя консоль, чтобы найти этот элемент.

document.querySelector('#txtCase')
null

Его там нет.Я знаю, что вы можете увидеть его, если щелкнуть правой кнопкой мыши, чтобы просмотреть это текстовое поле, но оно вложено в iframe.Вам нужно получить доступ к этому фрейму, затем найти кнопку и нажать на нее.

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