Puppeteer 1.0.0-post。 getProperty()
方法似乎有些神奇。例如,如果您的页面包含:
<a href="/foo/bar.html">link</a>
然后,这将不会返回 relative ,而是绝对网址:
const propertyHandle = await elementHandle.getProperty('href');
const href = await propertyHandle.jsonValue();
// href is 'https://localhost:8080/foo/bar.html'
另一方面,如果你要做更多的回旋:
const hrefHandle = await page.evaluateHandle(element => element.getAttribute('href'), elementHandle);
const href = await hrefHandle.jsonValue();
// href is '/foo/bar.html'
据我所知,puppeteer文档没有提到getProperty()
的这种行为?
它变得更加丑陋,例如,如果你想获得一个元素的style
属性。看起来木偶的getProperty()
实际上试图以某种方式解析样式,解析是错误的/不完整的。获取原始文本的唯一方法是使用对evaluateHandle(...)
的环形交叉调用。
这是一个预期的功能,只是一个文档错误?还是只是,完全是一个木偶虫?
感谢。
答案 0 :(得分:1)
有关HTML属性和DOM属性之间的区别,请参阅HTML - attributes vs properties。
你也可以轻松看到没有Puppeteer的差异。例如,在此页面上:
document.getElementById('nav-questions').href
// returns "https://stackoverflow.com/questions"
document.getElementById('nav-questions').getAttribute('href')
// returns "/questions"