2016-09-01 6 views
1

ruby ​​mechanize를 사용하여 결과 페이지를 탐색하는 데 도움이 필요합니다. 양식 값을 빼고 첫 페이지의 결과를 다운로드 할 수 있습니다. 다음 페이지로 연결되는 링크는ruby ​​mechanize를 사용하여 결과 페이지 탐색 (링크는 "onclick ="으로 정의 됨)

<a href=# onclick="setnext();">Next</a> 

다음으로 이어지는 결과 페이지로 이동하는 방법입니다. 나는 URL

<a href=# onclick="setnext();">Next</a> 

이 제대로 형성되지 않는다는 오류 메시지가

page = r_page.link_with(:text => 'Next').click 

을 시도하고도
@browser = Watir::Browser.new 
@login_page = result_page 
@l_page = @login_page.link(:text => "Next").fire_event('onclick') 
@browser.goto @l_page 

을 Watir과 사용했다. 나는 또한 인수로 page_no와 함께 페이지를 호출하려했지만 결과 페이지가 아닌 양식 제출 페이지를로드합니다. 친절하게 도와주세요. 감사합니다.

+0

'Next'은 유효하지 않습니다. '#'주위에 따옴표가 필요합니다. –

+0

예, 맞습니다. href = "#" – user6733460

+0

나에게 result_page URL을 줄 수 있습니까? –

답변

0

요점은 mechanize은 버튼을 클릭 할 때 실행해야하는 JavaScript 기능을 해석하지 않습니다 (onclick="setnext();").

당신은 적어도 두 가지 옵션이 있습니다 :

  1. 읽기를하고 (그것을 통해 또는 디버그) 자바 스크립트 코드를 이해합니다.
  2. 브라우저와 함께 제공되는 도구를 사용하십시오 (예 : Mozilla Firefox의 Developer, 일반적으로 F12을 눌러 액세스 할 수 있으며 Chromium과 유사한 기능을 제공함). 네트워크 탭으로 이동하여 실제로 발생하는 트래픽을 검사합니다. 버튼/링크를 클릭하면 URL과 매개 변수가 어떻게 구성되는지 파악할 수있을 것입니다 (특정 매개 변수가있는 특정 URL에 GET/POST 요청이 표시됨).

나는 게으르다. 충분한 HTTP를 이해하고 아직 JS 코드를 충분히 읽지는 않는다. 보통 두 번째 접근법을 사용한다.

mechanize은 JavaScript를 상자에서 제외하므로 브라우저에서 JavaScript를 먼저 끈 다음 페이지가 작동하는지 확인하십시오. 그렇지 않다면 JS가 다시 켜지면서 생성 된 요청을 살펴 봅니다.

+0

자바 스크립트를 해제하면 페이지 동작이 변경됩니다. setnext()에 대한 js 코드에는 getElementById ("Selected_page"). value = 2가 있습니다. 나는 우리가 watir을 사용하여 onclick 함수를 호출 할 수 있다고 생각했지만 그것도 작동하지 않는다. watir을 사용하여 onclick javascript 함수를 시작하는 다른 방법이있다. 고맙습니다. – user6733460