2009-03-24 3 views
13

Selenium으로 HTTP 응답 헤더를 검사하는 가장 좋은 방법이 필요합니다. 나는 Selenium 문서를 둘러 보았고 그것을 할 수있는 직접적인 방법을 찾지 못했다. 도움말은 높이 평가됩니다.Selenium으로 HTTP 응답 헤더를 검사하는 가장 좋은 방법

+0

? Selenium은 브라우저에서 작동합니다. 어떤 특정 정보가 있습니까? – Ben

답변

7

저는이 질문에 대해 StackOverflow에서 몇 번 대답했습니다. 내 이전 대답을 검색하여 그것을 파헤 치십시오. ProxyHandler와 SeleniumServer를 확장하는 사용자 정의 Java 코드를 작성해야하는 핵심입니다. 또한 AFTER 1.0 베타 2의 릴리스를 사용해야합니다. 이유를 물어 본 사람은입니다. 많은 이유가 있습니다. 필자의 경우, AJAX 무거운 앱을 테스트하고 있으며 일이 잘못 될 경우 가장 먼저 디버깅하는 것은 네트워크 와이어입니다. 이는 AJAX 호출이 발생했는지 여부를 확인하는 데 도움이되며, 그렇다면 응답이 무엇인지 알 수 있습니다.우리는 실제로이 정보를 수집하고 스크린 샷과 함께 모든 셀렌 테스트를 캡처합니다.

+0

저는이 문제가 실제로 제 문제를 해결하기 때문에 제가 좋아하는 답변으로 표시하고 있습니다. :) 헤더를 검사하려는 이유가 있습니다. 위의 게시물에 동의하지만 헤더에 표시하는 것이 매우 유용합니다. – globulus

+0

셀레늄 씨 자신이기 때문에 논할 수 없습니다.). 나는 서버에서 자바 클래스를 확장 할 수 있다는 것을 알고 있었다. –

+2

귀하의 답변을 검색 한 결과 귀하가 추천 한 답변을 찾을 수없는 것 같습니다. 그 답은 무엇입니까? 두 가지 Java 클래스를 확장하는 몇 가지 예가 있습니까? – nzpcmad

1

Selenium (Selenium RC가 아님)을 사용하여 이것을 처리 한 이유는 HTML 테스트를 JSP로 변환 한 다음 헤더를 읽거나 자바 스크립트 (셀레늄은 자바 스크립트)가 할 수없는 모든 작업을 수행 할 필요가있는 곳에서 Java를 활용하는 것이 었습니다 .

아마도 셀렌을 어떻게 사용할 계획인가에 대한 몇 가지 정보를 줄 수 있을까요?

+0

Selenium RC 용 Ruby 드라이버를 사용하고 있습니다. HTML 테스트를 JSP로 변환하는 것에 대한 의미를 따르는 지 확신 할 수 없습니다. 내가 테스트하고있는 사이트는 .Net으로 작성되었지만 접근 방식에 차이가 있다고 상상할 수는 없습니다. 그래서 헤더를 가로채는 방법이 있습니다. – globulus

3

이 유형의 테스트에서는 Selenium을 사용하지 않을 것이므로 다른 도구로 다양한 테스트 문제를 해결할 것을 제안합니다. 우리가 할 것은 :

  • 를 사용하여 단위 테스트 코드에 대한 테스트 : 방법 및 클래스

  • 통합 테스트는 응용 프로그램 구성 요소가 함께 걸어 방식을 테스트하는

  • Canoo WebTest에 같은 간단한 기능 테스트 프레임 워크 (또는 일부 상당)을 사용하여 Http 캐시 헤더, 기본 페이지 구조, 단순 리디렉션 및 쿠키 설정/값 등을 지정합니다.

  • 페이지의 유효성을 보장하는 주문 된 테스트 W3C 표준

  • JSunit는

그것의 가치가 보내는 시간이 다 파괴 해당 페이지에 자바 스크립트 클래스와 우리가 UI 기능/동작을 테스트 할

  • 셀레늄을 생성 방법과 자바 스크립트 의 통합을 테스트 Selenium 만 사용하면 문제가 발생할 수 있기 때문에 이러한 다양한 도구를 사용하여 시스템의 여러 측면을 테스트해야 할 책임은 다음과 같습니다.

    • 제품군이 클수록 실행 속도가 느립니다. 실제로 셀레늄 그것은 잘 작동/기능 테스트를 처리하지만, 그럼에도 불구하고 XPath의 취성 수 있으며
    • 보통 당신에게 설치 '을 필요로 유지하기 위해 시간과 노력의 양을 증가 필요할 수 있습니다
    • 언급 본질적으로 느린 다른 도구에 비해 그대로 경우 - 진짜 생활 '(지저분 할 수있는 시간이 많이 소요) 사용자 시나리오를 단계별로

    는 또한 몇 가지 기술이있다 당신의 앱 데이터 - 당신이 또는 건너하지 않을 수 있습니다 -하는 당신은 셀레늄 테스트 more resilient을 만드는데 사용할 수 있습니다.

  • 7

    DefaultSelenium의 captureNetworkTraffic() API는 http 요청/응답 헤더를 캡처하므로 html/xml/plain 형식으로 액세스 할 수 있습니다.

    Selenium s = new DefaultSelenium(...); 
    s.start("captureNetworkTraffic=true"); 
    s.open("http://www.google.com"); 
    String xml = s.captureNetworkTraffic("xml"); // html, plain 
    s.stop(); 
    
    +1

    이 방법은 셀렌 2에서 지원되지 않는다. java.lang.UnsupportedOperationException : captureNetworkTraffic'을 얻고있다. –

    1

    셀레늄에서 HTTP 응답 헤더를 테스트하는 것은 매우 유용 할 수 있다는 것을 나에게 보인다

    다음은 샘플 코드입니다. 100 %의 경우는 아니지만 ... 아마도 확실합니다. 일련의 페이지를 체크 아웃하는 경우, 테스트의 일부로 일부 응답 헤더를 테스트하는 것이 유용 할 것 같습니다 (Content-Type 및 Pragma to skap to mind).

    0

    글쎄, 우리 회사에서 gzip으로 웹 응용 프로그램의 CSS 및 JS 파일을 압축하고 Selenim이 테스트하려고하기 때문에 HTTP 헤드의 Accept-Encoding 속성에 "gzip"이 포함되어 있는지 확인하고 싶습니다. 각 커밋 후.

    0

    셀레늄의 세션 쿠키를 읽은 후 진짜를 사용 Selenium 외부의 HTTP 라이브러리가 특정 페이지를 요청합니다. 여기

    파이썬 코드 :

    # get session cookies from Selenium 
    cookies = {} 
    for s_cookie in self.selenium.get_cookies(): 
        cookies[s_cookie["name"]]=s_cookie["value"] 
    
    # request the pdf using the cookies: 
    response = requests.get(self.full_url('/vms/business_unit/2002/operational_unit/200202/guest/40/bill/pdf/'), cookies = cookies) 
    self.assertEqual(response.headers["content-type"], "application/pdf") 
    
    정확히 당신이 뭘 하려는지
    관련 문제