CasperJS通过class获取元素的innerHTML

4

我是CasperJS的新手,我在获取<p class="city">Data I Need</p>的innerHTML时遇到了一些问题。

我尝试了几种方法,但似乎都不起作用。

var city_name= casper.evaluate(".//*[@class='city_name']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
var friend_username = city_name.innerHTML;

并且

var city_name = this.evaluate(function() {
    return document.querySelector(".//*[@class='city_name']").innerHtml;
});
2个回答

8
CasperJS默认使用CSS选择器进行操作:
var city_name = casper.evaluate(function() {
    return document.querySelector(".city_name").innerHTML;
});

请注意,属性是innerHTML而不是innerHtml。另外要注意的是,casper.evaluate()是页面上下文的接口,与document.evaluate()无关。
当然,您可以使用XPath表达式来进行CasperJS实用程序的操作。诸如casper.getElementInfo()之类的函数提供了一些其他属性,例如html,实际上是对应DOM元素上的innerHTML属性。
var x = require("casper").selectXPath;
...
var city_name = casper.getElementInfo(x(".//*[@class='city_name']")).html;

1

对于我来说,我喜欢使用casper的getElementInfo()方法:

casper.getElementInfo('<插入CSS选择器>').html

或者在我的情况下,我想要内部文本:

casper.getElementInfo('<插入CSS选择器>').text


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接