昨天接到一个任务录入人员信息,有200多条,本该提供批量录入功能,结果只能一条一条复制粘贴,添加的时候还需要确认。刚好前两天研究了Puppeteer,可以模拟界面录入功能。因为保密原因,不能贴出相应的代码,就简单贴出模拟百度搜索的功能代码
环境需要
安装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();
})();
用到的技术点
const browser = await puppeteer.launch();//获得browser对象
const page = await browser.newPage();//获得page对象
await page.goto('https://www.baidu.com/'); //页面跳转
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()) {
……
}
网友评论