Abu*_*zzy 5 javascript node.js puppeteer
本地主机上的标记
<ul>
<li>
<button data-action-trigger="btn1">Button text</button>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我需要btn1通过选择它及其data-attribute值来单击btn
,我在console.log
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
page.setViewport({width: 1440, height: 1200})
await page.goto('http://localhost:3000/index.html')
const data = await page.content();
const btnAction = await page.evaluate(
() => document.querySelector('[data-action-trigger*="btn1"]'))
console.log(btnAction) //{}
await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)
我可以选择 Chrome devTools 元素作为
document.querySelector(`[data-action-trigger*="btn1"]`)
<button data-action-trigger="btn1">Button text</button>
Run Code Online (Sandbox Code Playgroud)
来自文档:
page.evaluate 和 page.evaluateHandle 之间的唯一区别是 page.evaluateHandle 返回页内对象 (JSHandle)。
由于它返回页内对象,因此您需要使用evaluateHandle而不是evaluate.
await page.waitForSelector('[data-action-trigger*="btn1"]');
const btnAction = await page.evaluateHandle(() => document.querySelector('[data-action-trigger*="btn1"]'))
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用page.$:
await page.waitForSelector('[data-action-trigger*="btn1"]');
const btnAction = await page.$('[data-action-trigger*="btn1"]');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6817 次 |
| 最近记录: |