puppteer常用操作和使用

简介: puppteer常用操作和使用

puppteer常用操作和使用

在开发一个UI自动化项目,由于RPA机器人中各平台选取UIPATH,UIBOT都需要付费,领导就选取了puppteer操作浏览器的爬虫框架做UI自动化,以下在使用过程中一些常用api和操作各种场景的开发

  1. 因为都是异步,基本每行代码都需要同步操作,就造成每行代码都加入await,代码比较啰嗦推荐使用rize框架高效开发Rize
  2. 创建一个操作实例对象;
const browser = await puppeteerBrowser.getBrowser();
    let site = await browser.newPage();
async getBrowser(){
   if(!this.browser){
        logInfo.info('浏览器对象构建中,下一个200毫秒=========>');
        return new Promise((resolve, reject)=>{
            setTimeout(()=>{
                resolve(this.getBrowser());
            },200);// 浏览器构建获取等待时间间隔
        });
    }
    return this.browser;
}
async newPage(){
    let site = this.browser.newPage();
    await site.setViewport({width:1920,height:1080});
    return site;
}
  1. 常用api
await site.click('#submit'); //点击操作
await site.type('#username',this.userName) //input输入字符
await site.waitForTimeout(1000); //等待1秒执行下一步操作
await frame.waitForSelector('.grid-td-col1'); //等待元素出现
//跳转第三个tab标签页
const browser = await puppeteerBrowser.getBrowser();
const newPage = (await browser.pages())[2];
await newPage.bringToFront();
//浏览器上下文操作,相当于浏览器中的console控制台
await frame2.evaluate(async () => {
    let a = $('.pupp').css('left');
    if(a!='-999px') {
        $('.as').click();
    }
})
//获取元素属性赋值
const href = await page.$eval('#a", ele => ele.href);
await frame2.$eval(`test`, e=> e.value='价格不符');
//上传文件
//uploadFile上传图片
const uploadPic = await frame2.waitForSelector('input[name=fileData]');
//上传图片目录自定义
await uploadPic.uploadFile(process.cwd()+'/doc/'+fileName);
await frame2.select(`.control-text select`,'规划');//选择下拉框内容

快速选取selector选择器


相关文章
|
Java jenkins 测试技术
如何利用Allure报告提升你的测试效率?
如何利用Allure报告提升你的测试效率?
如何利用Allure报告提升你的测试效率?
|
JavaScript
Ubuntu18.04 Install Node.js Np
Ubuntu18.04 Install Node.js Np
312 0
|
Web App开发 前端开发
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
406 0
|
JavaScript 前端开发 搜索推荐
Nuxt4.0初体验:一个简约、精美、现代化的个人站点导航!
这篇文章介绍了作者使用Nuxt 4.0重构个性化站点导航网站的经历,阐述了Nuxt 4.0的新特性和优势,如更清晰的项目结构、更好的TypeScript体验、更快的CLI和开发速度等,并且分享了重构过程中的体验和项目完成效果。同时,作者还对比了Nuxt.js与Next.js两个框架的优劣,表达了自己对Nuxt.js的偏好。
238 0
Nuxt4.0初体验:一个简约、精美、现代化的个人站点导航!
|
JavaScript Ubuntu Shell
Ubuntu上安装任意版本nodejs方法
通过以上步骤,您可以在Ubuntu系统上灵活地安装和管理不同版本的Node.js。这种方法让开发者能够根据不同项目的需要选择合适的Node.js版本,同时也使版本切换变得非常方便。而且,nvm能够为每个项目独立管理依赖,从而确保不同项目之间的环境隔离,增强了开发环境的稳定性和可维护性。
3690 2
|
12月前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
356 62
|
存储 Linux 数据库
运维系列.在Docker中使用Grafana(二)
运维系列.在Docker中使用Grafana(二)
597 4
|
12月前
|
传感器 消息中间件 物联网
常用的物联网协议
常用的物联网协议包括:MQTT(消息队列遥测传输)、CoAP(受限应用协议)、HTTP/HTTPS、LWM2M(轻量级机器对机器)和Zigbee等。这些协议在不同的应用场景中发挥着重要作用,如数据传输、设备管理等。
1170 2
|
前端开发 JavaScript 开发者
JavaScript 中的异步编程:深入了解 Promise 和 async/await
【10月更文挑战第8天】JavaScript 中的异步编程:深入了解 Promise 和 async/await
|
Java 编译器
成功解决:java file outside of source root
解决Java文件不在源代码根目录内的问题,可以通过在IDEA中将包含.java文件的目录设置为Sources Root来修复。
成功解决:java file outside of source root
下一篇
开通oss服务