2017-12-04 14 views
0

slimerJS에서 모든 URL 리디렉션을 가져 와서 배열에 저장 한 다음 최종 URL의 스크린 샷을 렌더링하는 방법은 무엇입니까?URL을 slimerJS로 리디렉션하고 최종 URL의 스크린 샷을 가져옵니다.

예를 들어 red.com을 slimer로 실행했지만 PHP를 통해 blue.com으로 리디렉션 한 다음 자바 스크립트를 통해 yellow.com으로 다시 리디렉션하는 경우 어떻게 이러한 리디렉션을 배열에 저장할 수 있습니까?

리디렉션이 끝나면 위의 예에서 yellow.com과 같은 최종 URL의 스크린 샷을 찍습니다.

헤드리스 모드에서 슬리머를 사용하고 싶기 때문에 슬리머 1.0을 사용하고 있습니다.

다음은 주말에 작성한 간단한 코드입니다.

call to slimer (windows) 
./slimerjs/src/slimerjs.bat --headless slimer-redirects.js http://google.com 

(내가 영국에있어)으로 검색됩니다 리디렉션을 선택하지 않습니다 아래의 스크립트를 사용하여 google.com에 대한 호출. 아래의 코드는 자바 스크립트 리디렉션을 감지하지만 이상하게 작동합니다. 아래 코드의 또 다른 문제는 작동 할 때 복수> 2 리디렉션을 선택하지 않는 것입니다.

var system = require("system"); 
var page; 
var myurl = system.args[1]; 

var renderPage = function(url) { 
    page = require('webpage').create(); 
    page.onNavigationRequested = function(url, type, willNavigate, main) { 
     if (url != myurl) { 
      myurl = url; 
      // page.close(); // makes some redirects hang. google.com for example 

      setTimeout('renderPage(myurl)', 1); 
     } 
    }; 
    page.open(myurl) 
    .then(function (status) { 
     if (status === "success") { 
      // I would then render screenshot here and exit 
      console.log("Final URL is: " + myurl); 
      slimer.exit(); 
     } 

    }); 

}; 

renderPage(myurl); 

리디렉션 URL을 얻는 것 자체가 간단하지만 난 알아 내지 못합니다. 슬림형으로는 불가능한 경우 다른 옵션에 대해서도 알고 싶습니다. 꼭두각시가 있든 없든 크롬 헤드리스인가?

답변

0

당신이 조각은 당신에게

를 도움이 될 것입니다 리디렉션 URL

var urls = []; 
page.onUrlChanged = function(url) { 
    urls.push(url); 
}; 

을 저장하기위한 콜백 onUrlChanged()을 사용할 수 있습니다