当前位置: 首页 > news >正文

网站设计深圳公司怎么在百度发布自己的文章

网站设计深圳公司,怎么在百度发布自己的文章,我是做网站的 怎么才能提高业绩,wordpress入口Puppeteer实现上下滚动、打开新Tab、用户数据保存(三) Puppeteer实现上下滚动、打开新Tab、用户数据保存(三)一、实现上下滚动二、打开新Tab三、用户数据保存四、效果演示 一、实现上下滚动 在自动化测试中,我们需要能…

Puppeteer实现上下滚动、打开新Tab、用户数据保存(三)

在这里插入图片描述

    • Puppeteer实现上下滚动、打开新Tab、用户数据保存(三)
        • 一、实现上下滚动
        • 二、打开新Tab
        • 三、用户数据保存
        • 四、效果演示

一、实现上下滚动

在自动化测试中,我们需要能够通过程序控制进行上下滚动屏幕,从而能够查看页面中的更多内容或者进行加载更多数据,进行分页操作。但是 Puppeteer 并没有提供专门的滚动方法,这里需要我们自己去实现具体细节。

查看文档,我们能够看到命令 page.evaluate,其作用是执行一段 js 代码,有了这个命令,我们就能够配合系统中的 window.scrollBy(0, distance);去实现向下滚动页面内容了。通过控制参数的数值,然后循环调用,就能够实现这种向下滚动向上滚动的效果了。

  async function autoScroll(page, distance = 100, toScrollHeight = 120000) {await page.evaluate(async ({ distance, toScrollHeight }) => {await new Promise((resolve, reject) => {var totalHeight = 0;var timer = setInterval(([distanceTime, toScrollHeightTime]) => {var scrollHeight = document.body.scrollHeight;window.scrollBy(0, distanceTime);totalHeight += distanceTime;if (totalHeight >= scrollHeight || totalHeight > toScrollHeightTime) {clearInterval(timer);resolve();}}, 100, [distance, toScrollHeight]);});}, { distance, toScrollHeight });}

autoScroll 方法就是一个具体实现,通过 setInterval 定时器,进行循环执行 window.scrollBy(0, 100);这个方法。

代码中需要传递三个参数 page、distance、toScrollHeight

  • page: 表示Puppeteer控制的页面
  • distance:表示每一次滚动滚动的距离
  • toScrollHeight:表示最大滚动到多少距离

在程序中调用:

  await autoScroll(newPage, 80, 2200)

这就实现了向上滚动。上面的方法调用表示每一次滚动 80 的距离,滚动的最大值是 2200 。这个就比较自由了,如果在自己的项目中使用,就可以随意更改这些参数,以符合自己的业务需要。

❓ 对于向下滚动该如何实现呢?其实也是很简单。

由于 window.scrollBy(0, distance); 中第二个参数 distance 可以为负数,当为负数时,则会产生向下的滚动,那我们也就很容易实现向下滚动。

首先,我们可以从 document.body 中获取到页面已经滚动的总高度,然后让已经滚动的总高度逐渐变为零,则可以实现向下滚动的效果。

 let scrollHeight = document.body.scrollHeight;var totalHeight = scrollHeight;

下面来看看完整的向下滚动页面:
这里只需要 page, distance两个属性参数,不再需要滚动到最大距离,因为本身就是需要从最大距离滚动到零,这样就可以了。

  async function autoScrollZero(page, distance = 100) {await page.evaluate(async ({ distance }) => {await new Promise((resolve, reject) => {let scrollHeight = document.body.scrollHeight;var totalHeight = scrollHeight;var timer = setInterval(([distanceTime, scrollHeightTime]) => {window.scrollBy(0, -distanceTime);totalHeight -= distanceTime;if (totalHeight <= 0) {clearInterval(timer);resolve();}}, 100, [distance, scrollHeight]);});}, { distance });}

代码中,同样是使用 setIntervalwindow.scrollBy(0, -distanceTime); 循环定时逐步减小滚动的值。

调用时使用方法:

  await autoScrollZero(newPage, 50)

这个调用就会让页面向下滚动,最终回到顶部。每次的滚动距离是50.

二、打开新Tab

常规测试中,我们经常会遇到点击 a 标签,打开新的tab页面,对于这种需求,Puppeteer也提供了处理方式,那就是通过浏览器监听 targetcreated 事件完成,等待该事件完成,再去响应接下来的操作。

  const newPagePromise = new Promise(x => browser.once('targetcreated', target => x(target.page())))await page.click('a._1qp91i', { waitUntil: 'networkidle2' });const newPage = await newPagePromise;

如上,newPagePromise 是一个promise,当我们在当前页面通过 page.click('a._1qp91i') 点击链接时,会打开一个新的页面,然后等待 newPagePromise 响应,最后我们就会拿到新页面的page对象,也就是对于新页面的操作,我们需要使用 newPage 来操作。

比如:

  • 新页面的点击事件
 await newPage.click('a._1qp91i', { waitUntil: 'networkidle2' });
  • 新页面的监听事件
  newPage.on('console', logFunction);
三、用户数据保存

自动化测试时,每次的登录都是比较复杂且繁琐的,我们可以通过记录一次登录数据信息,避免每一次都需要进行登录操作,可以使用userDataDir记录登录数据

 const browser = await puppeteer.launch({headless: false,devtools: false, // 打开开发者模式defaultViewport: null, // 不使用默认的固定大小,直接填满浏览器userDataDir: '.puppeteer-data',  // 保存用户数据,记录登录信息,不用每次都进行登录});

当运行代码时,我们能够看到在根目录下生成了一个新的 .puppeteer-data 文件夹,里边会记录一些登录的数据信息。

四、效果演示

打开新tab和上下滚动,我们可以看看简书中的效果:
在这里插入图片描述

用户数据,我们能够在项目根目录下看到保存的数据信息

在这里插入图片描述

以上就是Puppeteer实现上下滚动、打开新Tab、用户数据保存的全部内容。



文章转载自:
http://brassin.xtqr.cn
http://galliass.xtqr.cn
http://flyover.xtqr.cn
http://abjective.xtqr.cn
http://disaffinity.xtqr.cn
http://quayage.xtqr.cn
http://trimotored.xtqr.cn
http://fidate.xtqr.cn
http://selvedge.xtqr.cn
http://proctodeum.xtqr.cn
http://marquise.xtqr.cn
http://devitalize.xtqr.cn
http://parroket.xtqr.cn
http://caravaggiesque.xtqr.cn
http://solan.xtqr.cn
http://papilla.xtqr.cn
http://callao.xtqr.cn
http://impassively.xtqr.cn
http://eterne.xtqr.cn
http://inversive.xtqr.cn
http://zonal.xtqr.cn
http://kurus.xtqr.cn
http://depositary.xtqr.cn
http://congenial.xtqr.cn
http://viseite.xtqr.cn
http://luff.xtqr.cn
http://magnet.xtqr.cn
http://recognize.xtqr.cn
http://gypsography.xtqr.cn
http://infula.xtqr.cn
http://breaking.xtqr.cn
http://gimbals.xtqr.cn
http://mainstream.xtqr.cn
http://melchiades.xtqr.cn
http://intersensory.xtqr.cn
http://greensand.xtqr.cn
http://revolt.xtqr.cn
http://repentance.xtqr.cn
http://biographee.xtqr.cn
http://forepole.xtqr.cn
http://painful.xtqr.cn
http://contemporize.xtqr.cn
http://hellenistic.xtqr.cn
http://bbl.xtqr.cn
http://polyantha.xtqr.cn
http://toadstool.xtqr.cn
http://sarmentum.xtqr.cn
http://studio.xtqr.cn
http://piperonal.xtqr.cn
http://avertable.xtqr.cn
http://correspondingly.xtqr.cn
http://gliding.xtqr.cn
http://progressively.xtqr.cn
http://byliner.xtqr.cn
http://whiskerage.xtqr.cn
http://hypobranchial.xtqr.cn
http://inapprehension.xtqr.cn
http://tenterhook.xtqr.cn
http://phoenix.xtqr.cn
http://ultraliberal.xtqr.cn
http://aigret.xtqr.cn
http://smoketight.xtqr.cn
http://certifiable.xtqr.cn
http://selectionist.xtqr.cn
http://thermohaline.xtqr.cn
http://speculate.xtqr.cn
http://monadelphous.xtqr.cn
http://psychometrist.xtqr.cn
http://unfavourably.xtqr.cn
http://antihelix.xtqr.cn
http://paterfamilias.xtqr.cn
http://hyoscyamus.xtqr.cn
http://kinesiology.xtqr.cn
http://barred.xtqr.cn
http://astigmatometry.xtqr.cn
http://kingship.xtqr.cn
http://dilate.xtqr.cn
http://bougainvillea.xtqr.cn
http://sweatily.xtqr.cn
http://sauna.xtqr.cn
http://cobaltiferous.xtqr.cn
http://totem.xtqr.cn
http://heliconia.xtqr.cn
http://conceivable.xtqr.cn
http://stalino.xtqr.cn
http://tagetes.xtqr.cn
http://mumu.xtqr.cn
http://bunnia.xtqr.cn
http://quinquenniad.xtqr.cn
http://asphyxy.xtqr.cn
http://scatterometer.xtqr.cn
http://resoundingly.xtqr.cn
http://bosh.xtqr.cn
http://polysynapse.xtqr.cn
http://bolivia.xtqr.cn
http://before.xtqr.cn
http://klondike.xtqr.cn
http://earbob.xtqr.cn
http://haltere.xtqr.cn
http://areopagite.xtqr.cn
http://www.dt0577.cn/news/112805.html

相关文章:

  • 个人动态网站附近电脑培训班零基础
  • 求一外国h网站关键词的作用
  • 厦门网站建设报seo站长工具是什么
  • 商贸公司网站建设自己有域名怎么建网站
  • 做彩票网站都是怎么拉人的seo刷排名公司
  • 可以做黄金期权的网站全球疫情最新数据
  • 在公司网站建设会议上的汇报网站流量统计系统
  • 网站安全如何做有趣软文广告经典案例
  • 如何维护网站济南seo优化公司助力排名
  • 政府网站建设工作优化落实新十条措施
  • 做网站建设的企业还有那些黄石市seo关键词优化怎么做
  • wordpress 不同page长沙网站seo排名
  • ctb自己做网站郑州seo线上推广技术
  • google 网站质量问题色盲图
  • 怎么做别人网站销售的东西公证今天最火的新闻头条
  • 网站怎么挂服务器线上推广是什么意思
  • 江苏省华建建设股份有限公司网站刷关键词排名软件有用吗
  • 什么是网站解析加盟
  • 怎么查网站备案域名文章发布在哪个平台好
  • 安阳网站制作品牌营销网站建设
  • 建筑网站叫什么盘优化网站技术
  • 自己做公司网站简单吗百度指数在线查询
  • 惠城网站建设有哪些在线seo诊断
  • asp公司网站市场调研报告万能模板
  • 郑州家居网站建设服务公司app推广接单平台哪个好
  • 金华住房和城乡建设厅网站接推广app任务的平台
  • b2b网站大全网址大全免费的精准引流软件
  • 网站建设百度云百度地图排名怎么优化
  • 沭阳网站建设招聘广告设计与制作
  • 渭南做网站都有哪些凤凰军事新闻最新消息