我想在HTML页面的<em>
标签中获取仅字符串的属性
我想得到&#34;(868)&#34;
1
casper.then(function() {
var word = require('utils').dump(this.getElementAttribute(x('//*[@id="content"]/div[2]/h4/em'), 'em'));
console.log(word)
});
2
casper.then(function() {
var word = require('utils').dump(this.getElementAttribute(h4[class="head"], 'em'));
console.log(word)
});
我试过了两次,但它返回&#34; null&#34;如何解决问题?
答案 0 :(得分:7)
<em>
不是元素属性。它本身就是一个元素。 casper.getElementAttribute(selector, attribute)
将正确检索元素的属性文本,但您希望获取元素文本。
您可以使用casper.fetchText(selector)
。请注意,fetchText()
会将所有匹配元素的内容连接成一个字符串。如果您不想要,则需要确保选择器仅匹配单个元素或使用其他功能,例如casper.getElementInfo(selector).text
。
您的第二个代码段无法使用,因为您在选择器周围忘记了"
并且由于上述原因。
答案 1 :(得分:2)
查看文档常见问题 Can I access & manipulate DOM elements directly from the CasperJS environment? 。
在您在问题中添加的两个示例中,您试图将em
元素作为h4
的属性而错误,因为em
是一个孩子,而不是属性h4
标记,因此要选择元素textContent
,您可以尝试使用querySelector
函数evaluate
,如下所示:
casper.then(function() {
var text = this.evaluate(function(){
return document.querySelector("h4.head em").textContent;
});
var word = require('utils').dump(text);
console.log(word);
}
希望这有帮助。