一、知識點
-
page.evaluate()
-
document.querySelector().value = '';
二、解析知識點
page.evaluate(),查看puppeteer 的api , 通過api 我們可以大概了解,pgeFunction傳入的是一個頁面執行方法。返回一個pageFunction的執行結果。

三、實例
1. 我們今天做個案例,比如再同城上搜索某個時間段的機票,但是我們發現,時間空間幾乎很難定位到,出發城市,到達城市可以定位到並且可以用page.type()方法輸入地址,但是時間呢,怎么定位呢,我們分析一下:
1.時間元素,我們可以定位到把 :element = '#txtAirplaneTime1'
2.再分析,我們發現選中某個時間后,輸入框是“2019-08-20”
3.那好了,我們是不是直接運用js 把值傳進入就行了,也許有人問為什么page.type()不行,首先這個空間不是文本輸入,所以無法使用type
4.打開控制台調試下js代碼 document.querySelector("#txtAirplaneCity1").value = “” (自行調試,不演示了)

5.完整代碼
const puppeteer = require('puppeteer');
(async () => {
const brower = await puppeteer.launch({
executablePath:'D:\\wangxiao\\chrome-win\\chrome-win\\chrome.exe',
headless:false,
ignoreDefaultArgs:["--enable-automation"],
defaultViewport:{width:1200,height:700}
});
const page = await brower.newPage();
await page.goto('https://www.ly.com',{waitUntil:"networkidle2"});
await page.waitFor("#txtAirplaneCity1");
await page.waitFor("#txtAirplaneCity2");
await page.evaluate(() => {
document.querySelector("#txtAirplaneCity1").value = "上海";
document.querySelector("#txtAirplaneCity2").value = "成都";
document.querySelector("#txtAirplaneTime1").value = "2019-08-20";
})
const btn = await page.waitForSelector('#airplaneSubmit');
await btn.click();
})().catch(error =>{console.log('error')});

