【问题标题】:How to Set innerText By ElementHandle with Puppeteer?如何使用 Puppeteer 通过 ElementHandle 设置 innerText?
【发布时间】:2025-12-24 18:50:07
【问题描述】:

我正在尝试在 Puppeteer 测试环境中设置 HTML 元素的 innerText,但无法(轻松)通过 CSS 选择器获取元素,因此我通过以下方式获取 elementHandle

let [ el ] = await page.$x(`//span[contains(text(), 'addTestFile.pdf')]`)

我通常使用evaluate 设置innerText 用于测试目的,但我需要一个选择器,例如:

await page.evaluate(() => document.querySelector('mySelector').innerText = '⚠️DOM modified for testing purposes⚠️')

我可以在没有 CSS 选择器的情况下设置给定 elementHandleinnerText 吗?

我知道我可以使用 await el.getProperty('innerHTML') 获取值,但我没有找到设置它的方法。

【问题讨论】:

  • 类似const targetEle = [...document.querySelectorAll("span")].find(ele => ele.innerText.includes("addTestFile.pdf")) 来选择您的目标元素会有帮助吗?

标签: javascript puppeteer


【解决方案1】:

我想通了:我可以像这样在elementHandle 上使用evaluate

let [ el ] = await page.$x(`//span[contains(text(), 'addTestFile.pdf')]`)
await el.evaluate(element => element.innerText = '⚠️DOM modified for testing purposes⚠️')

【讨论】: