2014-12-24 1 views
0

나는 tr이 여러 개인 웹 페이지가 있으며 각 tr에는 여러 개의 td이 있습니다. 나는 내가 tr의하지만 td들받을 수 있나요 목록을 반복 할 때 구조는 같은 내가CasperJS를 사용하여 DOM을 탐색하십시오.

this.getElementsInfo('selector'); 

를 사용 tr의 목록을 얻을 수 있어요

<tr bgcolor="#FFFFFF"> 
<td class="td1" style="text-align:left">TGHD03WYD15UGS</td> 

<td class="td1" style="text-align:left"> 
    <font style="font-weight:bold"> TicketType</font> 
    :The Grand Hotel, New Delhi, 
    <font style="font-weight:bold"> FirstName</font> 
    :Sanjali, 
    <font style="font-weight:bold"> LastName</font> 
    :Garg 
</td> 

아래와 같이 보인다 html 형식으로 만 표시됩니다. 내가 가지고 싶습니다 속성을 사용하여 액세스 할 수있는 td 개체입니다. 글꼴 태그 객체를 보유하고있는 마지막 객체 td에서 내부 객체를 가져 오는 경우에도 마찬가지입니다.

실제 자바 스크립트 시나리오에서 DOM을 탐색 할 수 있다면 모든 개체를 가져올 수 있으며 해당 개체의 속성에 액세스 할 수 있습니다.

지금까지 CasperJS에서는 보이지 않았습니다. html 속성을 통해 객체 자체를 제공하는 대신 해당 요소의 문자열 표현을 제공합니다. 나는 진짜 자바 스크립트 에서처럼 요소의 자식을 탐색하고 싶습니다.

그럴 수 있습니까?

답변

0

casper.evaluate 또는 변형을 사용하여 DOM을 탐색 할 수 있습니다. 샌드 박스 된 페이지 컨텍스트에서 콜백으로 주어진 JavaScript를 실행합니다. DOM 노드와 같은 복잡한 객체는 전달할 수 없습니다. docs 말 :

참고 : 인수와 평가 함수에 반환 값은 간단한 기본 객체 여야합니다. 경험 법칙 : JSON을 통해 직렬화 할 수 있다면 괜찮습니다.

클로저, 함수, DOM 노드 등 이 아닙니다!

추가 읽기 :

Understanding the evaluate function in CasperJS
Why doesn't this.evaluate return DOM nodes correctly?
Iterating over a grid with CasperJS