2013-04-24 1 views
3

내 응용 프로그램의 테스트 도구로 casperjs를 사용하고 있습니다. 나는 이상한 문제에 직면하고있다. 이 코드 조각을 작성하는 방법에casperjs를 사용하여 기존 요소를 찾을 수 없습니다.

casper.then(function() { 
    this.click('a[href="/ui/thunder/"]') 

}) 
casper.then(function() { 

    this.test.assertUrlMatch(/ui\/thunder\/$/, 'Redirected to cloud page'); 
console.log(this.getHTML()); 
}); 

, 나는 UI/천둥 페이지로 리디렉션 및 콘솔 로그 this.getHTML()에, 그것은 나에게 페이지의 전체 HTML을 보여 주지만, 일부 정보 아직 실종 상태입니다.

페이지가로드되는 동안 여러 개의 REST API 호출이 수행되고 데이터가 화면에로드되지만 casperjs는 서버에서 오는 데이터를 표시하지 않습니다.

예 : 페이지가로드되면 <div class="user"></div> 태그에 표시되는 REST 서비스/auth/users를 호출합니다. 그래서 브라우저에서

내가 볼

, 그것은이

<div class = "user"> 
<div class "userName">User1</div> 
<div class "userName">User2</div> 
</div> 

처럼 가득하지만 난 this.getHTML()에 대한 casperjs에 CONSOLE.LOG을 수행 할 때, 나는 어떤없이 <div class="user"></div> (빈 태그를 얻을 수 사용자)

왜 이런 생각입니까?

답변

1

당신은 실제로 브라우저에서로드 할 URL을 기다려야 할 수 있습니다 :

파이어 폭스에 의해 적발되지 않았다 작은 자바 스크립트 바인딩 오류가 발생했습니다 때문에 Casperjs의 웹킷 내 페이지를 렌더링하는 데 실패했다
casper.then(function() { 
    this.click('a[href="/ui/thunder/"]') 
}); 

casper.waitFor(function() { 
    return /ui\/thunder\/$/.test(this.getCurrentUrl()); 
}, function() { 
    console.log(this.getHTML()); 
}); 
0

/chrome/IE. Konqueror를 다운로드하고 페이지를 렌더링하지 않는다는 사실을 발견했습니다. 바인딩 문제를 해결할 때 내 인생은 casperjs로 훨씬 쉽게되었습니다!