通过 xPath Puppeteer 获取值时没有 textContent
No textContent when getting value by xPath Puppeteer
我正在尝试获取 ID 为 staked
(397.497836) 的 value
div 中的文本。它看起来像这样:
我正在处理元素的 xpath,它是://*[@id="staked"]
在我在 Whosebug/github 上看到的所有示例中,人们似乎能够使用 textContent
检索文本,但是我的日志记录没有显示该字段可用。
await page.waitForXPath('//*[@id="staked"]');
let handle = await page.$x('//*[@id="staked"]');
console.log(handle[0]);
_remoteObject: {
type: 'object',
subtype: 'node',
className: 'HTMLDivElement',
description: 'div#staked.value',
objectId: '-6241729959890640645.3.7'
},
就上下文而言,这不是静态文本,因为我是从我的 React 组件传递它的。有什么想法可以让我以不同的方式获取文本吗?
现在您需要使用 .evaluate
从句柄中提取该值
正如 ggorlen 指出的那样,您可以使用 id:
// xpath
const el = await page.waitForXPath('//*[@id="staked"]');
const content1 = await el.evaluate(el => el.textContent);
console.log('xpath', content1);
// id
const content2 = await page.$eval("#staked", el => el.textContent);
console.log('id', content2);
我正在尝试获取 ID 为 staked
(397.497836) 的 value
div 中的文本。它看起来像这样:
我正在处理元素的 xpath,它是://*[@id="staked"]
在我在 Whosebug/github 上看到的所有示例中,人们似乎能够使用 textContent
检索文本,但是我的日志记录没有显示该字段可用。
await page.waitForXPath('//*[@id="staked"]');
let handle = await page.$x('//*[@id="staked"]');
console.log(handle[0]);
_remoteObject: {
type: 'object',
subtype: 'node',
className: 'HTMLDivElement',
description: 'div#staked.value',
objectId: '-6241729959890640645.3.7'
},
就上下文而言,这不是静态文本,因为我是从我的 React 组件传递它的。有什么想法可以让我以不同的方式获取文本吗?
现在您需要使用 .evaluate
从句柄中提取该值正如 ggorlen 指出的那样,您可以使用 id:
// xpath
const el = await page.waitForXPath('//*[@id="staked"]');
const content1 = await el.evaluate(el => el.textContent);
console.log('xpath', content1);
// id
const content2 = await page.$eval("#staked", el => el.textContent);
console.log('id', content2);