首页 > 其他分享 >等待waitFor

等待waitFor

时间:2022-10-22 12:32:49浏览次数:96  
标签:await const waitFor 加载 等待 page 页面

参考:​​https://zhaoqize.github.io/puppeteer-api-zh_CN/​


//等待登陆按钮selector出现在页面中
await page.waitForSelector(SELECTOR.LOGIN_BTN)
//页面等待3秒
await page.waitForTimeout(3000)
//等待登录按钮XPath出现在页面中
await page.waitForXPath(XPATH.LOGIN_BTN)
await page.goto(url)
//等待页面加载完成
await page.waitForNavigation();

puppeteer——等待页面元素、等待函数、等待加载、请求、响应

waitForSelector与waitForXPath
waitForTimeout
waitForNavigation
waitForRequest
waitForResponse
waitForFunction

往往页面不会“唰”的一下马上加载好,甚至有时候网络影响会导致半天加载不出我们需要的页面元素,这里就需要waitFor全家桶了


  • waitForSelector与waitForXPath

大白话翻译:等待选择器/XPath

这两个其实说到底长得都差不多,都是右键copy就有选项是要selector还是XPath,用法一致,长相也亲兄弟,连参数都一样,更多更具体就不细说了可以自己查

但这里有一个非常好用的小点!

看到了什么?等待函数返回的居然是元素句柄??

所以就有了下面这种写法:

const login_btn = await page.waitForSelector(SELECTOR.LOGIN_BTN)

什么叫一举两得啊,用一次不仅等待、还获得了元素的句柄!

可以说是非常方便了


  • waitForTimeout

等待一段时间再继续向下执行,要注意的是这里的时间是毫秒做单位!


  • waitForNavigation​

这里官网API的原话是这么说的:

This resolves when the page navigates to a new URL or reloads.
It is useful for when you run code which will indirectly cause the page to navigate.

啥意思呢,意思就是:

如果你跳转了新URL或者重新加载页面了,用这个就能解决你的问题。

当你间接会导致页面跳转的时候用贼有效。

反正就记着——页面跳转完了,用来等加载


  • waitForRequest

字面上看,等待请求

使用方法,官网API中如下:

const firstRequest = await page.waitForRequest('http://example.com/resource');
const finalRequest = await page.waitForRequest(request =>
request.url() === 'http://example.com' && request.method() === 'GET');
return firstRequest.url();

参数是要等待的URL或者函数,等到了URL或函数的请求再继续


  • waitForResponse

同样字面看,等待响应

使用方法,官方API中如下:

const firstResponse = await page.waitForResponse('https://example.com/resource');
const finalResponse = await page.waitForResponse(response => response.url() === 'https://example.com' && response.status() === 200);
const finalResponse = await page.waitForResponse(async response => { return (await response.text()).includes('<html>') })
return finalResponse.ok();

参数同样是要等待响应的URL或者函数


  • waitForFunction

等待函数执行,官方API示例如下:

const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const watchDog = page.waitForFunction('window.innerWidth < 100');
await page.setViewport({width: 50, height: 50});
await watchDog;
await browser.close();
})();

简单说就是等一个函数执行了再继续,这个函数可以自定义

标签:await,const,waitFor,加载,等待,page,页面
From: https://blog.51cto.com/u_9911196/5785772

相关文章

  • 阻塞和忙等待
    【区别】1.阻塞不会占用CPU,忙等待会占用CPU。但忙等待也不是零成本,每个线程会占用1M内存。而且会给CLR和操作系统带来管理开销2.忙等待可以避免上下文的切换  【阻......
  • oracle open hang 等待cursor: pin S wait on X---惜分飞
    客户19.3数据库无法在open过程hang住分析alert日志 2022-10-18T15:04:57.374918+08:00db_recovery_file_dest_sizeof102400MBis9.58%used.Thisisaus......
  • selenium基础之3大等待
     隐性和显性区别为:在显性的EC条件模块中,在selenium3.X当中,每一个条件都是由类实现的,每个类都有2个方法,__init__,__call__在selenium4.X当中,每一个条件是由函数实现的......
  • [答疑]业务序列图上等待响应怎么画
    Alan2020-5-1412:41各位同学,对于1.31.6在需求规约这样写系统请求A系统处理XXX,系统等待B系统发送分析结果这样合理不?还是要拆成1.6拆成另一个用例,但是用户对引入系统的期......
  • Selenium4Web自动化3-等待机制详解
    一、sleepsleep(timeout)是设定一个固定的等待时长,代码运行到此处,会强行进行等待指定的时间,使用方便的同时,效率最低,不建议使用。缺点:不能准确把握需要等待的时间(有时操......
  • 三种等待方法
    强制等待使用 time.sleep() 强制等待,设置固定的休眠时间,对于代码的运行效率会有影响。以上面的例子作为参照,将隐式等待改为强制等待。 隐式等待隐式等待也是指定......
  • 数字化的制造业,真的不能再等待了!
    2019年12月1日,一名入职8年长安福特汽车的生产工程师,年仅30岁的邓乐家选择结束了自己年轻的生命。邓乐家在经历每周工作七天,每天从早上8点到晚上8,9点。短短5个月的加班时长,......
  • ThreadPool ExecutorService使用invokeAll提交多个任务并等待结果返回
    https://blog.csdn.net/liangwenmail/article/details/79421029  invokeAll可以提交多个任务,在任务完成前该方法会阻塞,直到所有任务完成或中断或超时,返回Future列表。......
  • 消费者进行轮询等待
    #include<stdio.h>#include<stdlib.h>#include<pthread.h>#definemin(a,b)((a)<(b)?(a):(b))#defineMAXNITEMS1000000#defineMAXNTHREADS10intnitems......
  • kali 和 centOS 更改菜单项等待选项时间
    kali和CentOS的开机会有引导界面,默认需等待5秒才能自动进入默认的启动项,接下来会尝试将等待时间调成0秒,也就是跳过启动菜单,直接进入默认启动项 kali//转成root用户sudo......