昨天接到一個(gè)任務(wù)錄入人員信息,有200多條,本該提供批量錄入功能,結(jié)果只能一條一條復(fù)制粘貼,添加的時(shí)候還需要確認(rèn)。剛好前兩天研究了Puppeteer,可以模擬界面錄入功能。因?yàn)楸C茉?,不能貼出相應(yīng)的代碼,就簡(jiǎn)單貼出模擬百度搜索的功能代碼
環(huán)境需要
安裝nodejs,puppeteer
模擬百度搜索代碼
(async () => {
const browser = await puppeteer.launch({
ignoreHTTPSErrors: true,
headless: false,
slowMo: 250,
timeout: 0
});
const page = await browser.newPage();
await page.setViewport({
width: 1024,
height: 980
})
await page.goto('https://www.baidu.com/');
const nm = await page.$("#kw");//通過id獲得頁面上的控件
await nm.focus(); //定位到搜索框
await page.keyboard.type("puppeteer");//模擬輸入
const btn = await page.$("#su");
btn.click();//模擬按鈕單擊事件
// await page.close();
// await browser.close();
})();
用到的技術(shù)點(diǎn)
const browser = await puppeteer.launch();//獲得browser對(duì)象
const page = await browser.newPage();//獲得page對(duì)象
await page.goto('https://www.baidu.com/'); //頁面跳轉(zhuǎn)
const name = await page.$("input[name='ryname']");//通過name獲得頁面上的控件
const nm = await page.$("#kw");//通過id獲得頁面上的控件
await nm.focus(); //定位到搜索框
await page.keyboard.type("puppeteer");//模擬輸入
const btn = await page.$("#su");
btn.click();//模擬按鈕單擊事件
let iframe = await page.frames().find(f => f.name() === 'qy_r');//找名稱為qy_r的子框架
//子框架遍歷
for (let child of iframe.childFrames()) {
……
}