typescript - pupetteer - 获取内部文本返回 JSHandle 前缀
问题描述
我正在使用此代码查找元素并获取其文本:
// helper method to find elements
async function findElementByText(page, tag, searchValue, conditionType) {
const items = await page.$$(tag)
for (var i = 0; i < items.length; i++) {
let valueHandle = await items[i].getProperty('innerText');
let itemText = await valueHandle.jsonValue();
const text = getItemText(itemText);
if(conditionType == 'contains'){
if (text.indexOf(searchValue) !== -1) return items[i]
}else if(conditionType == 'equals'){
if (searchValue == text) return items[i]
}
}
return false;
}
// find an element using helper
let searchResult = await findElementByText(parent, 'span', 'R$', 'contains')
// trying to get inner text
let itemText = await searchResult.getProperty('innerText');
console.log(itemText);
所以输出是JSHandle:R$ 594,60
。这个 JSHandle 前缀是什么?
我只想要文本内容。我怎样才能做到这一点?
解决方案
您的findElementByText
函数正在返回items[i]
,它是ElementHandle
由page.$$(selector)
. 然后你调用getProperty
this ElementHandle
,它又返回一个jsHandle
. 当你得到console.log
对象时。要从 jsHandle 获取文本,您必须通过调用.jsHandle
jsHandle
jsHandle
jsonValue()
所以总而言之:
let itemJsHandle = await searchResult.getProperty('innerText');
let itemText = await itemJsHandle.jsonValue();
查看 puppeteer 文档:puppeteer。
快乐编码
推荐阅读
- ruby-on-rails - 茧添加记录后如何执行功能?
- python - NodeJS中的child_process在它应该出现的时候没有错误
- omnet++ - 模块错误中的 Omnet++ 未知参数
- javascript - 弹出打印对话框没有功能
- powerapps - 在另一个文本框中显示完全相同的文本
- javascript - HTML
- javascript - Nuxt2 引导程序 4
- reactjs - 使用 Jest 和 Enzyme 基于 ContextAPI 数据测试组件的条件渲染
- android - 如何使用jetpack compose为卡片视图添加边框
- python - 可能有人可以帮助我 NameError: name 'urllib' is not defined