如何使用两个或多个选择器的CasperJS findOne函数?

时间:2014-12-19 08:20:25

标签: javascript css-selectors casperjs

对不起.. 这个ariticle更新..

元素被认为是一个,但发现两个或更多...抱歉.. :))

<div class="rd_ft">
    <div id="prev_next">
        <a id="rd_prev" href="aaaa.html"></a>
    </div>
</div>

<div class="rd_ft">
    <div id="prev_next">
        <a id="rd_prev" href="bbbb.html"></a>   <--- it will select this element only
    </div>
</div>

...........

var con_prev = 
    this.evaluate(function(){ 
        return __utils__.findOne('div[class="rd_ft"] div[id="prev_next"] a[id="rd_prev"]').getAttribute('href'); 
    });

它不应该使用此代码..

当前选择的数据是aaaa.html。

我想知道如何选择最后一个元素。

1 个答案:

答案 0 :(得分:1)

替换这个:

findOne('div[class="rd_ft"] div[id="prev_next"] a[id="rd_prev"]')

用这个:

findOne('div[class="rd_ft"], div[id="prev_next"], a[id="rd_prev"]')

第一个版本将搜索看起来像这样的元素:

<div class="rd_ft">
    <div id="prev_next">
        <a id="rd_prev"></a>   <--- it will select this element only
    </div>
</div>

第二个版本将选择3个单独的元素:

<div class="rd_ft"></div>
<div id="prev_next"></div>
<a id="rd_prev"></a> 

更新

我刚刚看了你的问题,看来你可能会问错误的问题。

如果您想选择<a>元素作为其他两个div的子元素,那么如果您的div有超过1个类,则它将无效。您正在测试div[class="rd_ft"],只有当div具有一个类时才会有效。如果您的div有超过1个类,则需要使用类选择器.进行测试,如下所示:div.rd_ft

基本上,你会想要使用它:

findOne('div.rd_ft div[id="prev_next"] a[id="rd_prev"]')