我有一个这样的页面:
<ul id="a">
<li class="b">
<a>Content1</a>
</li>
<li class="b">
<a>Content2</a>
</li>
<li class="b">
<a>Content3</a>
</li>
...
</ul>
我尝试了几种方法,但是我没有找到解决方案来获取所需的所有内容。
以我的例子,我想得到:
array[0] = Content0
array[1] = Content1
array[2] = Content2
我试过:casper.getHTML
,但它返回第一个匹配的元素,我不明白为什么?以我的示例为例:this.getHTML("ul#a li.b a")
仅返回"Content 1"
。
答案 0 :(得分:1)
您需要使用为多个元素返回结果的函数。 getHTML
返回一个字符串,因此只返回一个结果。一个例子是getElementsInfo
函数。注意元素中的s。它公开了text
属性,您可以使用它来获取预期的数组:
var array = casper.getElementsInfo("ul#a li.b a").map(function(a){
return a.text;
});
如果您没有找到这样的功能,那么您可以在页面上下文中做同样的事情:
var array = casper.evaluate(function(){
return [].map.call(document.querySelectorAll("ul#a li.b a"), function(a){
return a.innerHTML;
});
});