人偶没有显示单击文本字段后显示的日历

时间:2019-02-19 11:13:07

标签: javascript node.js web-scraping 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('https://www.marriott.com/hotels/travel/reumd-le-meridien-ra-beach-hotel-and-spa');
            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应该包含的内容:

enter image description here

但是我却得到了这个:

enter image description here

如您所见,myscreenshot.png不包含日历。我不知道自己在做什么错,因为我单击了正确的节点,甚至还给了我足够的时间来加载所有内容。

提前谢谢!

编辑:我忘了说我也曾尝试Puppeteer recorder来实现这一目标,但我也没有运气。

1 个答案:

答案 0 :(得分:0)

由于您有许多.l-h-field-input元素,因此我会尝试在其中更具体。 这对我有用:

await page.click('.js-recent-search-inputs .js-datepick-container .l-h-field-input');