puppeteer|自动化UI测试|JS|零基础入门(六)——等待waitFor

news/2024/7/19 14:30:47 标签: js, 软件测试, ui, chrome devtools

话不多说,上代码

	//等待登陆按钮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,用法一致,长相也亲兄弟,连参数都一样,更多更具体就不细说了可以自己查

但这里有一个非常好用的小点!
来看API:

returns: <Promise<?ElementHandle>>

看到了什么?等待函数返回的居然是元素句柄??
所以就有了下面这种写法:

	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();
})();

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


以上内容API中都很详细,包括参数、示例等,想要深入再学的这里是链接


记录学习、爬坑经验
0年经验小白,欢迎大佬指点!
希望可以帮到你!


http://www.niftyadmin.cn/n/1356686.html

相关文章

NYOJ-cigarettes

cigarettes 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;2描述Tom has many cigarettes. We hypothesized that he has n cigarettes and smokes them one by one keeping all the butts. Out of k > 1 butts he can roll a new cigarett…

puppeteer|自动化UI测试|JS(七)—— 自动滚动/拖动至页面底部

话不多说&#xff0c;上代码 async function autoScroll(page) {await page.evaluate(async () > {await new Promise((resolve, reject) > {var totalHeight 0;var distance 100;var timer setInterval(() > {var scrollHeight document.body.scrollHeight;wind…

typescript|自动化UI测试|TS|入门(一)—— 基本数据类型

TypeScript——基本数据类型TypeScriptBoolean、number、stringany与联合Enum——枚举数组与元组TypeScript 这是我在自学自动化测试的路上&#xff0c;又一个巨坑……谁让我欠嗖嗖的要用呢……先学吧…… Boolean、number、string let isBool: Boolean true isBool falsel…

KPM算法——数据结构|复习局|串|复杂模式匹配算法|二维数组解决KPM

数据结构复习局——KPM算法何为KPM&#xff1f;事先规则状态匹配dp——状态转移图状态X获得dp数组值看看图再理解下写在前面&#xff1a; 本文仅为作者个人学习记录&#xff0c;详细具体内容参考自知乎大佬labuladong &#x1f448;点击与大佬&#x1f93a;击剑&#x1f93a; 话…

树与二叉树(一)——数据结构|复习局|树

数据结构复习局——树树的定义与基本概念树的性质写在前面&#xff1a; 本文仅为记录个人学习复习过程&#xff0c;如有错误欢迎指正&#xff0c;相互学习&#xff01; 话不多说&#xff0c;上图 树的定义与基本概念 树的性质 记录学习、爬坑经验 究极小白&#xff0c;欢迎大佬…

树与二叉树(二)——数据结构|复习局|特殊二叉树|满二叉树|完全二叉树|平衡二叉树

数据结构复习局——二叉树&#xff08;二&#xff09;二叉树特殊二叉树满二叉树与平衡二叉树写在前面&#xff1a; 本文仅为记录个人学习复习过程&#xff0c;如有错误欢迎指正&#xff0c;相互学习&#xff01; 话不多说&#xff0c;上图 二叉树 特殊二叉树 满二叉树与平衡二…

树与二叉树(三)——数据结构|复习局|二叉排序树BST|平衡二叉树AVL|哈夫曼树及哈夫曼编码Huffman

数据结构复习局——二叉树&#xff08;三&#xff09;二叉排序树&#xff08;BST&#xff09;定义查找插入平衡二叉树&#xff08;AVL&#xff09;定义插入规律归纳LL平衡旋转RR平衡旋转LR平衡旋转RL平衡旋转哈夫曼树&#xff08;Huffman&#xff09;定义构造哈夫曼编码基本概念…

图(一)——数据结构|复习局|图的定义|图的概念及术语

数据结构复习局——图&#xff08;一&#xff09;图的定义图的基本概念及术语写在前面&#xff1a; 本文仅为记录个人学习复习过程&#xff0c;如有错误欢迎指正&#xff0c;相互学习&#xff01; 图的定义 图G–由顶点集V与边集E组成&#xff0c;记作G &#xff08;V&#x…