如何将此日期选择器与 Puppeteer 一起使用

Sim*_*sen 4 javascript web-scraping puppeteer

我想从以下页面抓取航班数据: https: //www.airprishtina.com/de/

我设法选择了机场,但此页面有一个日期选择器,我不知道如何以编程方式使用它。单击开始日期输入我可以打开日期选择器,

await page.click('#txt_FromDateText');
Run Code Online (Sandbox Code Playgroud)

但是我需要做什么来选择日期/日期范围?我尝试等待一天选择器并单击“One”,但这不起作用。

const daySelector = '.available.flight-present';
await page.waitForSelector(daySelector);   
const elements = await page.$('.available');
const el = Array.from(elements).filter(el => {
    return el.dataset.usrDate === '2019-10-26';
})[0];
console.log(el);
await el.click();
Run Code Online (Sandbox Code Playgroud)

console.log 正在打印该元素,但它没有在日期选择器中被选中。我究竟做错了什么?

感谢您的任何提示。

小智 7

解决方案是从 #txt_FromDateText 元素中删除只读属性。

await page.focus('#txt_FromDateText');
await page.$eval('#txt_FromDateText',(e) => e.removeAttribute("readonly"));
Run Code Online (Sandbox Code Playgroud)

然后您可以使用“await page.type”输入任何日期。

:)


小智 6

选择您的日期
await page.focus('#txt_FromDateText');

如果您的日期采用其他格式,只需相应更改即可。
await page.keyboard.type('20191026');