Javascript 木偶演员:从没有';单击“输入标记”按钮后刷新

Javascript 木偶演员:从没有';单击“输入标记”按钮后刷新,javascript,node.js,web-scraping,puppeteer,Javascript,Node.js,Web Scraping,Puppeteer,我试图在点击输入标签按钮后获取一些html。我正在用page.evaluate()单击按钮,因为page.click()似乎不适用于输入标记按钮。我尝试过在Puppeter启动选项中使用headless:false进行视觉调试,以验证浏览器是否确实在单击按钮后导航到该点。我不确定为什么page.content()会在单击按钮之前返回html,而不是在事件发生后返回html const puppeteer = require('puppeteer'); const url = 'http://ww

我试图在点击输入标签按钮后获取一些html。我正在用page.evaluate()单击按钮,因为page.click()似乎不适用于输入标记按钮。我尝试过在Puppeter启动选项中使用headless:false进行视觉调试,以验证浏览器是否确实在单击按钮后导航到该点。我不确定为什么page.content()会在单击按钮之前返回html,而不是在事件发生后返回html

const puppeteer = require('puppeteer');
const url = 'http://www.yvr.ca/en/passengers/flights/departing-flights';
const fs = require('fs');
const tomorrowSelector = '#flights-toggle-tomorrow'

puppeteer.launch().then(async browser => {
    const page = await browser.newPage();
    await page.goto(url);
    await page.evaluate((selector)=>document.querySelector(selector).click(),tomorrowSelector);
    let html = await page.content();

    await fs.writeFile('index.html', html, function(err){
        if (err) console.log(err);
        console.log("Successfully Written to File.");
    });
   await browser.close();
  });

您可以单击收音机的标签。此外,还需要等待状态发生变化的迹象(对于XHR/fetch响应或新选择器)。例如,此代码对我有效,但您可以使用任何其他条件,或者只需等待几秒钟

const fs=require('fs');
const puppeter=require('puppeter');
常量url=http://www.yvr.ca/en/passengers/flights/departing-flights';
const-tomorrowLabelSelector='label[for=flights-toggle-tomorrow];
const tomorrowLabelSelectorChecked='.yvr-form_uutoggle:checked+label[for=flights toggle tomorrow];
puppeter.launch({headless:false})。然后(异步(浏览器)=>{
const page=wait browser.newPage();
等待页面。转到(url);
等待承诺([
页面。单击(明日标签选择器),
page.waitForSelector(明天标记选择器已检查),
]);
const html=wait page.content();
等待fs.writeFile('index.html',html,(err)=>{
if(err)console.log(err);
log('已成功写入文件');
});
//等待浏览器关闭();
});

您可以单击收音机的标签。此外,还需要等待状态发生变化的迹象(对于XHR/fetch响应或新选择器)。例如,此代码对我有效,但您可以使用任何其他条件,或者只需等待几秒钟

const fs=require('fs');
const puppeter=require('puppeter');
常量url=http://www.yvr.ca/en/passengers/flights/departing-flights';
const-tomorrowLabelSelector='label[for=flights-toggle-tomorrow];
const tomorrowLabelSelectorChecked='.yvr-form_uutoggle:checked+label[for=flights toggle tomorrow];
puppeter.launch({headless:false})。然后(异步(浏览器)=>{
const page=wait browser.newPage();
等待页面。转到(url);
等待承诺([
页面。单击(明日标签选择器),
page.waitForSelector(明天标记选择器已检查),
]);
const html=wait page.content();
等待fs.writeFile('index.html',html,(err)=>{
if(err)console.log(err);
log('已成功写入文件');
});
//等待浏览器关闭();
});

page.evaluate()之后添加一个
wait page.waitFor(500)
。您只需稍等页面完成其DOM更新。在
页面.evaluate()之后添加
等待页面.waitFor(500)
。您只需稍等页面完成DOM更新。