내가 지금 하는거는 말야.

capserJS라는 모듈로 웹페이지를 크롤링 하고 있단 말야.


지금 내가 하려는 작업은

어떤 대상 페이지에서 button의 텍스트가 "준비중"에서 "다운로드"로 바뀌면,

그 다운로드 버튼에 해당하는 url을 가져오고 싶어.


원래 내가 생각한 방식은 이렇다.


capser.waitForTextChange("#the_Button", function() {

//뭐 대충 해당 url을 이용해 리다이렉트.

}};


그리고 이게 될 줄 알았는데 문제가 생겼다.

button의 텍스트가 "준비중"에서 바로 "다운로드"로 넘어가는게 아니라

준비중에서 바로 "다운로드"로 넘어갈 때도 있고, "..." 식으로 작업중표시가 뜨다가 "다운로드"로 넘어갈 때도 있다라는거다.


결국 button의 텍스트가 정말 "다운로드"인지 검증할 필요가 생김.


그래서 생각한게

var button_text;

while( button_text != "다운로드" ) {

button_text = capser.evaluate(function() {

return $("the_Button").text().trim(); //문법오류를 지적하지는 말자. 아무튼 잘 리턴함.

});


if( button_text == "다운로드") {

//뭔가를 한다

}

casper.wait(1000); //1초마다

}


이런 방식인거다.

1초마다 비동기 함수이지만 evalute를 실행시켜서 해당 버튼의 텍스트가 "다운도르"로 변경되었는지를 체크하는 과정.


근데 생각만큼 안되네...

일단 구글링해보니까 capserJS는 while 같은 looping을 지원하지 않는데... ㅠㅠ