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

How to use CasperJS findOne function with two or more selectors?

本文关键字:两个 选择器 CasperJS 何使用 findOne 函数      更新时间:2023-09-26

对不起..这个算术更新..

元素被认为是一个,但发现两个或更多..对不起..:)

<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。

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

替换它:

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 有一个类时才起作用的div[class="rd_ft"]。 如果您的div 具有 1 个以上的类,则需要使用类选择器对其进行测试.如下所示: div.rd_ft

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

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