- Puppeteer 教程
- Puppeteer - 首页
- Puppeteer - 简介
- Puppeteer - 元素处理
- Puppeteer - Google 使用
- Puppeteer - NodeJS 安装
- Puppeteer VS Code 配置
- Puppeteer - 安装
- Puppeteer - 基本测试
- Puppeteer - 无头执行
- Puppeteer 与 Selenium 的比较
- Puppeteer 与 Protractor 的比较
- Puppeteer 与 Cypress 的比较
- Puppeteer - 浏览器操作
- Puppeteer - 标签处理
- Puppeteer - 基本命令
- Puppeteer - Firefox
- Puppeteer - Chrome
- Puppeteer - 处理确认警报
- Puppeteer - 处理下拉菜单
- Puppeteer - 定位器
- Puppeteer - XPath 函数
- Puppeteer - XPath 属性
- Puppeteer - XPath 分组
- Puppeteer - 绝对 XPath
- Puppeteer - 相对 XPath
- Puppeteer - XPath 轴
- Puppeteer - 类型选择器
- 名称选择器和类名选择器
- Puppeteer - ID 选择器
- Puppeteer - 属性选择器
- Puppeteer - 处理链接/按钮
- 处理编辑框和复选框
- Puppeteer - 处理框架
- Puppeteer - 键盘模拟
- Puppeteer - 获取元素文本
- Puppeteer - 获取元素属性
- Puppeteer - 设备模拟
- Puppeteer - 禁用 JavaScript
- Puppeteer - 同步
- Puppeteer - 捕获屏幕截图
- Puppeteer 有用资源
- Puppeteer - 快速指南
- Puppeteer - 有用资源
- Puppeteer - 讨论
Puppeteer - 同步
Puppeteer 的 Page 类包含用于实现同步的方法。这些方法用于等待页面上的操作/元素。它等待满足条件(真值)。例如,我们经常等待页面上出现文本。
同步方法
Puppeteer 中的同步方法如下所示:
waitFor
此方法用于等待特定时间段,然后再解析 Promise。
语法
语法如下:
await page.waitFor(4000)
waitForSelector
此方法用于等待元素在网页上可见或消失。
语法
语法如下:
page.waitForSelector(
selector,
{options : value}
)
waitForSelector 接受两个参数。第一个参数是元素的选择器值。第二个参数是选项数组。选项如下所示:
可见 - Puppeteer 将等待直到元素定位器在页面上可见。默认值为 false。
隐藏 - Puppeteer 将等待直到元素定位器从页面上隐藏。默认值为 false。
超时 - 元素的最大等待时间(毫秒)。默认值为 30000。如果超时设置为零,则将其丢弃。
可以使用以下方法修改默认等待时间:
page.setDefaultTimeout(6000)
例如:
let l = await page.waitForSelector( "#ltxt", { visible: true } )
waitForXpath
此方法用于等待由 xpath 标识的元素/元素在网页上可见或消失。
语法
语法如下:
page.waitXpath(
Xpath value,
{options : value}
)
waitForXpath 接受两个参数。第一个参数是元素的 xpath 选择器值。第二个参数是选项数组。选项如下所示:
可见 - Puppeteer 将等待直到元素定位器在页面上可见。默认值为 false。
隐藏 - Puppeteer 将等待直到元素定位器从页面上隐藏。默认值为 false。
超时 - 元素的最大等待时间(毫秒)。默认值为 30000。如果超时设置为零,则将其丢弃。
可以使用以下方法修改默认等待时间:
page.setDefaultTimeout(6000)
例如:
let x= await page.waitForXPath( "//*[@name='search']", { visible: true } )
waitForFunction
此方法用于等待提供的函数返回真值。
语法
语法如下:
page.waitForFunction(
pagefunction,
{options : value},
pagefunction args
)
waitForFunction 具有以下参数:
pagefunction 是要执行的函数。例如:
page.waitForFunction("document.getElementById('txt').value === 'text'", {})
此函数将等待直到 id 为的元素的值等于 text。
option 是等待参数的数组。它们是 - polling(以毫秒为单位执行 pagefunction 的间隔)和 timeout(Puppeteer 将等待 pagefunction 返回真值的最大时间)。
pagefunction args 是传递给 pagefunction 函数的参数。
在下图中,让我们输入文本 - Puppeteer,然后按 Enter。
按 Enter 后,将打开一个新窗口,其中包含带有文本 - 大约 39 个结果的搜索结果。
首先,请按照 Puppeteer 上基本测试章节中的步骤 1 到 2 操作,如下所示:
步骤 1 - 在创建 node_modules 文件夹的目录中创建一个新文件(Puppeteer 和 Puppeteer core 已安装的位置)。
Puppeteer 安装的详细信息在 Puppeteer 安装章节中讨论。
右键单击创建 node_modules 文件夹的文件夹,然后单击“新建文件”按钮。
步骤 2 - 输入文件名,例如 testcase1.js。
步骤 3 - 在创建的 testcase1.js 文件中添加以下代码。
//Puppeteer library
const pt= require('puppeteer')
async function waitImplementation(){
//launch browser in headless mode
const browser = await pt.launch()
//browser new page
const page = await browser.newPage()
//launch URL
await page.goto('https://tutorialspoint.com/index.htm')
//identify edit box
const f = await page.$("#gsc-i-id1")
//enter text
f.type("Puppeteer")
//wait for sometime
await page.waitForTimeout(4000)
//press Enter
await page.keyboard.press('Enter')
//wait for an element xpath
await page.waitForXPath("//div[@class='gsc-result-info']")
//identify element
const t = await page.$(".gsc-result-info")
//obtain text
const text = await (await t.getProperty('textContent')).jsonValue()
console.log("Text is: " + text)
}
waitImplementation()
步骤 4 - 使用以下命令执行代码:
node <filename>
因此,在我们的示例中,我们将运行以下命令:
node testcase1.js