2012-07-05 2 views
1

Watir을 사용하여 응용 프로그램에 로그인하고 일부 버튼을 누르는 등의 작업을 수행합니다. 기본적으로 Watir을 사용하는 일반적인 작업입니다.Ruby Watir의 동적 PDF 읽기

그러나 내 문제는 테스트해야하는 특정 페이지가 있다는 것입니다. 실제로 동적으로 생성 된 PDF이고, 실제 바이너리 데이터를 가져와 사용해야하므로 사용중인 특정 보석을 사용하여로드 할 수 있습니다. 이것은 보통 정적 PDF 파일에서 사용할 수 있습니다.

open("http://site.com/something.pdf") 

정적 PDF에서 작동합니다. 그러나 우리가 Ruby를 사용하여 HTTP 요청을 보내고 Watir이 사용하는 헤더/쿠키/세션을 인식하지 못하기 때문에 동적으로 생성 된 메시지에 대해서는 작동하지 않습니다. 그래서 실제 PDF를받는 대신 로그인 페이지를 얻습니다.

우리가 PDF 얻을 Watir과를 사용하는 것이었다 시도 또 한가지 : 파이어 폭스 텍스트 그래서 PDF 파일을 로딩 DOM을 생성하기 때문에

@browser.goto "http://site.com/dynamic/thepdffile" 
    @browser.text 
    @browser.html 

우리는 페이지에서 텍스트 나 HTML을 받고 시도하지만, 행운을 빈 문자열이고 html은 PDF 페이지를 볼 때 firefox가 생성 한 DOM입니다. 원시 HTTP 응답이 필요하며이를 추출 할 방법이없는 것 같습니다. Watir과의 세션을 사용하여,

  1. 그림 밖으로 루비에서 사용하는 "열기"하는 방법 또는 이와 유사한 방법 :

    그래서 우리는 우리가이 옵션을 가지고 이것에 대한 내 의견에 솔루션이 필요합니다.
  2. watir을 사용하여 PDF 페이지에서 바이너리 http 응답을 얻는 방법을 알아 봅니다.
  3. "다른 이름으로 저장"대화 상자가 나타나도록 pdf 플러그인을 비활성화하십시오 (불가능한 것 같습니다).

다른 아이디어가 있다면 공유하십시오! 미리 감사드립니다!

+0

나는 pdf 플러그인을 비활성화하는 것이 좋습니다. http://stackoverflow.com/questions/9636255/how-to-run-chrome-firefox-with-disabled-flash-plugin-from-watir-script –

+0

참조하십시오. 너무 좋은 옵션입니다. 그래서, 이것을하기 위해 어떤 옵션을 사용해야합니까? Firefox를 사용해야하고 참조 된 링크는 firefox 용 플러그인을 비활성화하는 예를 보여주지 않습니다. –

+0

Firefox에서 * tools> add-ons> plugins *으로 이동하여 pdf 플러그인을 비활성화하십시오. 그런 다음 firefox를'browser = Watir :: Browser.new : firefox, : profile => "default"' –

답변

1

해결책을 찾았습니다.

firefox 용 프로필에서 plugin.scan.Acrobat을 "999"로 설정하면 PDF 플러그인을 효과적으로 비활성화 할 수 있습니다.

profile = Selenium::WebDriver::Firefox::Profile.new 
    profile['plugin.scan.Acrobat'] = "999" 
    b = Watir::Browser.new :firefox, :profile => profile