2012-07-17 5 views
1

몇 주 동안 탐색 작업을 자동화하려고합니다. 작업은 간단합니다 : 로그인, 링크 클릭, 변수 입력 및 제출, 로그 아웃. 이 작업을 수행하는 웹 사이트를 만들어야합니다 (더 단순한 인터페이스) 웹 사이트에서 서블릿을 사용하고 웹 사이트 코드에 액세스 할 수 없음을 명심하십시오. 처음에는 CURL을 시도했지만 curl에 일부 Ajax 요소가 있었기 때문에 해당 내용을 표시 할 수 없었습니다. .NET Webdriver, JUnit, Selenium 등을 시도했지만 모두 Ajax 요소 렌더링에 실패했습니다. perl과 python을 기계화 해 보았습니다. perl은 작동하지 않지만, 나는 파이썬으로 동적 인 내용을 얻을 수있었습니다. 문제는 내가 Javascript로 시작하는 Javascript 실행 링크가 있다는 것입니다. 그리고 Mechanize로 함수를 호출 할 수 없다고 생각합니다. 이 작업이 가능한지 아무도 알지 못합니까?탐색 작업을 자동화하는 방법은 무엇입니까?

+0

'waitFor's 셀렌을 사용하여 Ajax를 훌륭하게 해 보았습니까? 그것은 정확히 어떻게 실패 했는가? –

+0

Selenium failed on logging. 셀레늄의 .NET 래퍼를 사용했고 로그인 화면을 지나칠 수 없었습니다. "비밀번호를 입력해야합니다."라는 오류가 나타납니다. (예, 양식 필드의 이름이 정확했습니다.) – user1470618

+0

[Mechanize FAQ] (http://p3rl.org/WWW::Mechanize::FAQ#JavaScript)에는 Javascript 지원 부족에 대한 해결 방법이 포함되어 있으며 Javascript를 지원해야합니다. – daxim

답변

2

펄 모듈 WWW::Mechanize이 화면이된다고, 다운로드, 업로드, 양식 제출, 인증, 간단한 브라우징, 같은 웹 브라우징 작업을 자동화의 가장 인기있는 방법 등 등

웹 사이트는 자바 스크립트가 포함되어 경우

, 그들을 다루는 대중적인 Perl 모듈은 WWW::Mechanize::Firefox을 사용합니다.

지금까지 "거의"자바 스크립트와 Ajax 같은 기술 및 SSL 보안을 사용하고, 또는 프록시 서버를 통해 액세스를 포함한 모든 종류의 웹 사이트는 LWP::UserAgentWWW::Mechanize 또는 WWW::Mechanize::Firefox에 속하는 펄 모듈 방식의 조합에 의해 처리 할 수 ​​있습니다. 웹에서 사용 가능한 예제로드.

+0

내가 이해하는 방식 WWW :: Mechanize :: Firefox에는 Firefox 확장 기능 인 MozlRepl이 필요하며 내 명령 행 환경과 아무 관계가 없습니다. – user1470618

+0

어떤 종류의 "명령 줄 환경"을 사용하고 있습니까? WWW :: Scripter를 사용하여 javascript도 처리 할 수 ​​있습니다. – Annjawn

+0

감사합니다 Annjawn, Just linux, 저는 신임장을 받고 일부 작업을 자동화하는 스크립트를 실행하는 웹 사이트를 만들려고합니다. 따라서 모든 작업이 스크립트에서 완료되어야하며, Scripter도 살펴 보겠습니다.그러나 나는 모든 사람들이 말하는 것에도 불구하고 스크립트로 복잡한 웹 사이트를 처리하는 것은 가능하다면 매우 어렵고 모듈에 의존한다는 결론에 도달하고 있습니다. – user1470618

1

예를 사용하여 casperjs :

var casper = require('casper').create({ 
    verbose: true, 
    logLevel: 'debug' 
}); 
casper.start(
    'http://example.com', 
    function() { 
     this.evaluate(function() { 
      return $('#someElementId div').length; // This runs as if it was on the page 
     }); 
     this.fill(
      '#formId', 
      { 
       email: '[email protected]', 
       password: 'password123' 
      }, 
      true 
     ); // This submits login form 
    } 
); 

Casperjs 쿠키를 저장, 깊은 페이지에 대한 요청이 실패하지 않을 수 있도록.

양식 제출에 대한 자세한 내용은 fill()을 참조하십시오.

js를 테스트중인 페이지에서 실행 된 것처럼 실행하려면 evaluate()을 참조하십시오.

AJAX 작업을 테스트하려면 문제 없습니다. 페이지가 브라우저에서 실행중인 것처럼 실행되고 DOM에서 결과를 볼 수 있습니다. evaluate()을 사용하여 수동으로 시작할 수 있습니다.

+4

* OOOOO 임의의 링크! * - 더 많은 정보가 도움이 될 것입니다. – rlemon

+0

Ajax 요소에서 Selenium WebDriver가 실패했습니다. – user1470618

+0

플러스 팬텀과 함께 서버 사이드 자바 스크립트를 실행할 수있을거야? – user1470618

관련 문제