Puppeteer не показывает календарь, который отображается после нажатия текстового поля - PullRequest
0 голосов
/ 19 февраля 2019

Я использую Puppeteer для выполнения некоторых операций по очистке веб-страниц, и у меня возникают проблемы.Веб-сайт, который я пытаюсь очистить, это один , и я пытаюсь создать снимок экрана календаря, который появляется после нажатия кнопки «Забронировать сейчас»> «Даты».

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

Заранее спасибо!

Редактировать: Iзабыл сказать, что я также пытался Puppeteer рекордер , чтобы добиться этого, и мне тоже не повезло.

1 Ответ

0 голосов
/ 19 февраля 2019

Поскольку у вас много .l-h-field-input элементов, я бы попробовал быть более конкретным.Это сработало для меня:

await page.click('.js-recent-search-inputs .js-datepick-container .l-h-field-input');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...