【发布时间】:2021-05-26 07:19:00
【问题描述】:
我是新来的,所以你能帮帮我吗!?
我需要使用 puppetter 在虚拟引用 #document html 中获取一些元素,但是当我尝试收到一条消息时,它元素不存在。
以下示例:
HTML
<div class="row" id="mainDiv">
<iframe id="mainFrame" src="...">
#document
<html>
<head></head>
<body>
<div id="firstDIV">
<div id="secondDIV">
</div>
<input type="text" id="inputMain" name="principalInput">
</div>
</body>
</html>
</iframe>
</div>
在该示例中,我需要从输入中获取价值。但是 puppeteer 不会访问 #document
中的任何内容我正在使用 nodeJS
【问题讨论】:
-
尝试在 Puppeteer 的 iFrame 元素上使用
.contentFrame()以获取内部文档。它是异步的,所以你必须await它。如果这不起作用,您可能需要提供有关您的 Puppeteer 代码本身的更多详细信息 - 这对于帮助其他人提供相关解决方案很重要! -
嘿伙计!按照代码:` const iframeElement = await page.$('#mainFrame') const frame = await iframeElement.contentFrame() console.log('started') const value = await frame.$eval('#inputMain', input => input.value) console.log('finished') await page.evaluate((val) => { document.getElementById('inputMain').value = "READY" }, value) `` 在那个例如,控制台日志仅用于测试,因为未显示“完成”。我猜,“等待”停止代码。