2014-12-19 2 views
-2

미안 .. 요소가 하나가 될 것으로 생각하지만, 두 개 이상의 발견CasperJS findOne 함수를 두 개 이상의 선택자와 함께 사용하는 방법?

이 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입니다.

마지막 요소를 선택하는 방법을 알고 싶습니다.

+0

메신저하지 : 당신이 사용하고자하는 것입니다, 기본적으로 div.rd_ft

: 당신의 사업부가 1 개 이상의 클래스가있는 경우, 다음과 같이 클래스 선택 .를 사용하여 테스트해야 그러나 발견의 요점이 아닙니다 ** 하나 **는, 잘, 하나, 그리고 둘 이상을 발견하는 것입니까? 게다가 여러 요소를 선택하려면 공백이 아닌 쉼표로 구분해야합니다. space는 다음 요소를 이전 요소의 하위 요소로 검색합니다. – Banana

+0

자, 이것은 잘못된 HTML입니다. ID는 DOM에서 한 번만 사용됩니다. 정말 이것이 DOM이 어떻게 생겼는지 확신합니까? –

+0

예. 일부 사이트는 게시물을 작성한 다음 텍스트의 내용을 복사하여 붙여 넣기를 원합니다. 해결할 방법이 있습니까? – Kang

답변

1

이 대체 :

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

2 버전은 별도의 3을 선택합니다 :

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"]') 

을 요소 :

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

UPDATE

난 그냥 질문에 두번째보기를했다, 잘못된 질문을 할 수있는 것으로 보인다.

<a> 요소를 다른 두 div의 하위 요소로 선택하려면 div에 1 개 이상의 클래스가있는 경우 작동하지 않습니다. div가 이고 하나가 인 경우에만 작동하는 div[class="rd_ft"]을 테스트하고 있습니다. 이입니다 casperjs 뭐죠 확인

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

@ArtjomB. 나는 동의하지만, casperjs의 셀렉터 지원에 대해 확신하지 못한다. 그래서 내가 여분의 조정없이 op의 질문에 대해 평범한 대답을 한 이유는 무엇인가. 게다가, 나는 그가 처음부터 div 엘리먼트에 href 속성을 두는 시나리오를 볼 수 없다 ... – Banana

+0

일반적으로 (PhantomJS)는 모든 CSS3 선택자를 지원하지만, 몇몇 것은 'nth-child'와 같은 버그가있다. 그런 경우 XPath를 사용하는 것이 좋습니다. 봐. –

+0

. 이 경우 나는 op의 언어 장벽이 그가 자신의 질문을 그릇되게 문구 화하도록 강하게 믿는다. 나는 나의 대답을 업데이트 할 것이다. – Banana