Ric*_*ego 2 javascript puppeteer
我正在尝试使用以下代码从网页获取所有按钮元素:
const test = await page.evaluate(() => {
return document.querySelectorAll("button")
})
console.log(test)
Run Code Online (Sandbox Code Playgroud)
当我记录测试变量时,它会生成“未定义”,而当我在 chrome 控制台上运行以下代码时:
document.querySelectorAll("button")
Run Code Online (Sandbox Code Playgroud)
它产生正确数量的元素。
您需要HTMLElements
在网站上下文中执行所有与 相关的操作(因此在回调中evaluate
)。
evaluate
当您离开网站的上下文时,您可以返回的内容非常有限evaluate
。
您返回的数据evaluate
必须是可序列化的,DOM元素不能以有意义的方式序列化。
因此,您只能返回可使用JSON.stringify
.
我的最终目标是检查所有按钮,直到找到具有特定内部文本的按钮,然后单击它。
那么您可能不想使用,使用或evaluate
从站点上下文外部查询元素$
$$
let buttons = await page.$$("button")
Run Code Online (Sandbox Code Playgroud)
要从中获取文本,ElementHandler
您可以使用:
const text = await page.evaluate(element => element.textContent, buttons[0]);
Run Code Online (Sandbox Code Playgroud)
或者
const text = await (await buttons[0].getProperty('textContent')).jsonValue();
Run Code Online (Sandbox Code Playgroud)
Aclick
可以通过以下方式执行:
await buttons[0].click()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2341 次 |
最近记录: |