草庐IT

Puppeteer

全部标签

Puppeteer之处理弹框、实现文件上传下载以及操作iframe下页面元素

前面博客介绍了定位、操作页面元素以及如何校验执行结果。此篇博客将介绍如何处理页面弹框、文件上传下载、操作iframe里面页面元素,为了完成课程目标,分了3个task处理页面弹框实现文件上传和下载操作操作iframe中的元素接下来就开始第一个task的学习,同样执行“npmrunhandle-dialog”即可运行下面讲解的案例。处理页面弹框弹框主要分为三种类型:alertbox、confirmbox、promptbox。alterbox主要用于给用户显示一些提示信息,通常会带一个OK按钮,点击OK按钮即可关闭alterbox。confirmbox主要让用户输入确认或者取消信息,confirmb

Puppeteer将动态html页面生成pdf(终极解决方案)

开通掘金好几年一直没有写文章,近一年经常有朋友问我将动态的h5/vue/react/原生js页面转成pdf,我觉得有必要写个文章,给大家提供一套经过多个项目验证的完整解决方案的思路;觉得有用可以点赞支持一下;目前将html页面转成pdf文件的主流方式1.不论是哪种方式,只要是将h5/vue/react/原生js页面生成pdf,都会遇到的问题1.各个浏览器、手机兼容性问题;2.内容截断问题;包括不限于echart图表截断、动态table行截断问题3.业务关系紧密的内容和描述需要尽可能放在一起打印4.生成动态内容pdf等问题5.批量下载pdf稳定性问题6.如果是大文件前端等待时间较长,如果关闭页面

javascript - 使用 Puppeteer、Mocha 和 Chai 断言 html 标签属性中存在文本

我正在开始使用这些技术(包括Javascript)的旅程,所以,这是一个初学者问题。我正在努力弄清楚如何断言HTML属性中的给定文本符合预期。HTML片段:到目前为止,这是我的.it函数,使用Mochai、Puppeteer和Chai(为清楚起见省略了设置和拆卸:it('optoutofemail',asyncfunction(){awaitpage.setDefaultNavigationTimeout();awaitpage.waitForSelector('.widget-title');constframe=page.frames().find(frame=>frame.nam

html - 用于 puppeteer 操作的 C# API

是否有任何用于使用Puppeteer的C#API?用例:需要获取HTML的坐标/边界框。本来可以使用Selenium+PhantomJS,但考虑到PhantomJS的不稳定问题,我们想尝试Puppeteer。有人可以帮忙吗? 最佳答案 Sharppuppeteer看起来像是一个很好的c#新解决方案https://github.com/kblok/puppeteer-sharp基于GoogleChromepuppeteer 关于html-用于puppeteer操作的C#API,我们在Sta

javascript - 想使用 Puppeteer 抓取表格。如何获取所有行,遍历行,然后为每一行获取 "td' s"?

我有Puppeteer设置,我能够使用以下方法获取所有行:letrows=awaitpage.$$eval('#myTabletr',row=>row);现在我想为每一行获取“td”,然后从中获取innerText。基本上我想这样做:vartds=myRow.querySelectorAll("td");其中myRow是表格行,带有Puppeteer。 最佳答案 实现此目的的一种方法是使用评估,它首先获取所有TD的数组,然后返回每个TD的textContentconstpuppeteer=require('puppeteer');c

google-chrome - Websocket 与多个 Chrome Docker 容器的通信

我有一个Chrome容器(使用thisDockerfile部署),它根据来自App容器的请求呈现页面。基本流程是:应用程序向Chrome发送一个http请求,并作为响应接收一个要使用的websocketurl(例如ws://chrome.example.com:9222/devtools/browser/13400ef6-648b-4618-8e4c-b5c73db2a122)然后应用程序使用该websocketurl与Chrome进一步通信,并接收呈现的页面。我正在使用puppeteerlibrary使用puppeteer.connect({browserWSEndpoint:web

google-chrome - Websocket 与多个 Chrome Docker 容器的通信

我有一个Chrome容器(使用thisDockerfile部署),它根据来自App容器的请求呈现页面。基本流程是:应用程序向Chrome发送一个http请求,并作为响应接收一个要使用的websocketurl(例如ws://chrome.example.com:9222/devtools/browser/13400ef6-648b-4618-8e4c-b5c73db2a122)然后应用程序使用该websocketurl与Chrome进一步通信,并接收呈现的页面。我正在使用puppeteerlibrary使用puppeteer.connect({browserWSEndpoint:web

node.js - Puppeteer 错误 : Protocol error (Page. captureScreenshot):目标已关闭

我在node:8-slim容器上运行puppeteer@1.12.2时遇到此错误。完整的错误:Error:Protocolerror(Page.captureScreenshot):Targetclosed.atPromise(/app/node_modules/puppeteer/lib/Connection.js:183:56)atnewPromise()atCDPSession.send(/app/node_modules/puppeteer/lib/Connection.js:182:12)atPage._screenshotTask(/app/node_modules/pup

node.js - Puppeteer 错误 : Protocol error (Page. captureScreenshot):目标已关闭

我在node:8-slim容器上运行puppeteer@1.12.2时遇到此错误。完整的错误:Error:Protocolerror(Page.captureScreenshot):Targetclosed.atPromise(/app/node_modules/puppeteer/lib/Connection.js:183:56)atnewPromise()atCDPSession.send(/app/node_modules/puppeteer/lib/Connection.js:182:12)atPage._screenshotTask(/app/node_modules/pup

javascript - 表单提交后 Puppeteer 等待页面加载

我使用以下代码提交表单,我希望Puppeteer在提交表单后等待页面加载。awaitpage.click("button[type=submit]");//howtowaituntilthenewpageloadsbeforetakingscreenshot?//idon'twantthis://awaitpage.waitFor(1*1000);//←unwantedworkaroundawaitpage.screenshot({path:'example.png'});如何使用puppeteer等待页面加载? 最佳答案 您可以异