问题描述
我的目标是搜索“所有者”,最后输入电话号码的值。
AGE^2
这是我到目前为止的内容,但是我不断得到Y ~ X1
。你能解释我在做什么错吗?
Y ~ X2
解决方法
有一些问题:
-
page.$()
需要CSS选择器,而不是XPath。 -
page.$x()
将返回一个带有ElementHandle-s的数组。 - ElementHandle-s与DOM元素的属性不同,我们需要使用更复杂的API来获取它们。
- 我无法让伪娘只用完整的URL用
a
href创建'#'
元素,但这可能是一个测试用例。
这对我有用:
const html = `
<!doctype html>
<html>
<head><meta charset='UTF-8'><title>Test</title></head>
<body>
<div>
<h3>
<a href="http://example.com/">Owner</a>
</h3>
<p>
(555) 555-5555
</p>
</div>
</body>
</html>`;
const puppeteer = require('puppeteer');
(async function main() {
try {
const browser = await puppeteer.launch();
const [page] = await browser.pages();
await page.goto(`data:text/html,${html}`);
const data = await (
await (
await page.$x("//h3[contains(a,'Owner')]/../p")
)[0].getProperty('innerText')
).jsonValue();
console.log(data);
await browser.close();
} catch (err) {
console.error(err);
}
})();