Puppeteer不会显示单击文本字段后显示的日历
我正在使用Puppeteer进行网络抓取,我遇到了麻烦。我试图抓住的网站是这个one,我正在尝试创建一个日历的屏幕截图,在点击“立即预订”>“日期”按钮后出现。
const puppeteer = require('puppeteer');
const fs = require('fs');
void (async () => {
try {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('');
await page.setViewport({ width: 1920, height: 938 });
await page.waitForSelector('.m-hotel-info > .l-container > .l-header-section > .l-m-col-2 > .m-button');
await page.click('.m-hotel-info > .l-container > .l-header-section > .l-m-col-2 > .m-button');
await page.waitForSelector('.modal-content');
await page.waitFor(5000);
await page.waitForSelector('.js-recent-search-inputs .js-datepick-container .l-h-field-input')
await page.click('.js-recent-search-inputs .js-datepick-container .l-h-field-input');
await page.waitFor(5000);
await page.screenshot({ path: 'myscreenshot.png'});
await browser.close();
} catch (error) {
console.log(error);
}
})()
这就是myscreenshot.png应包含的内容:
但我得到了这个:
如您所见,myscreenshot.png不包含日历。我不明白我做错了什么,因为我点击了正确的节点,我甚至给它足够的时间来装载所有东西。
先感谢您!
编辑:我忘了说我也尝试过Puppeteer recorder以实现这一点,我也没有运气。
回答如下:由于你有很多.l-h-field-input
元素,我会尝试在那里更具体。这对我有用:
await page.click('.js-recent-search-inputs .js-datepick-container .l-h-field-input');
Puppeteer不会显示单击文本字段后显示的日历
我正在使用Puppeteer进行网络抓取,我遇到了麻烦。我试图抓住的网站是这个one,我正在尝试创建一个日历的屏幕截图,在点击“立即预订”>“日期”按钮后出现。
const puppeteer = require('puppeteer');
const fs = require('fs');
void (async () => {
try {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('');
await page.setViewport({ width: 1920, height: 938 });
await page.waitForSelector('.m-hotel-info > .l-container > .l-header-section > .l-m-col-2 > .m-button');
await page.click('.m-hotel-info > .l-container > .l-header-section > .l-m-col-2 > .m-button');
await page.waitForSelector('.modal-content');
await page.waitFor(5000);
await page.waitForSelector('.js-recent-search-inputs .js-datepick-container .l-h-field-input')
await page.click('.js-recent-search-inputs .js-datepick-container .l-h-field-input');
await page.waitFor(5000);
await page.screenshot({ path: 'myscreenshot.png'});
await browser.close();
} catch (error) {
console.log(error);
}
})()
这就是myscreenshot.png应包含的内容:
但我得到了这个:
如您所见,myscreenshot.png不包含日历。我不明白我做错了什么,因为我点击了正确的节点,我甚至给它足够的时间来装载所有东西。
先感谢您!
编辑:我忘了说我也尝试过Puppeteer recorder以实现这一点,我也没有运气。
回答如下:由于你有很多.l-h-field-input
元素,我会尝试在那里更具体。这对我有用:
await page.click('.js-recent-search-inputs .js-datepick-container .l-h-field-input');