2012-07-26 3 views
3

나는 자동 테스트를 작성하기 위해 ruby와 함께 selenium-webdriver를 사용하고 있습니다.Selenium으로 Firefox에서 보안 경고를 처리하는 방법

Chrome과 chromedriver 바이너리는 실제로 잘 작동하지만 브라우저 구성과 관련된 Firefox에 문제가있어 Chrome과 함께 전달되는 반면 테스트가 실패합니다. 파이어 폭스에서 테스트를 실행할 때

가, 때로는이 메시지와 경고 얻을 :이 페이지는 암호화되어 있지만

를 입력 한 정보는 암호화되지 않은 연결을 통해 전송되는 하고 쉽게 될 수있다 타사로 읽기

그리고 실행이 중단됩니다. 최근 Firefox 버전 (10 이상)에서이 경고를 비활성화하거나 Selenium에서이 동작을 처리하는 방법이 있습니까?

+0

Windows에서 실행 중이십니까? 그렇다면 전화 할 수있는 외부 스크립트에 관심이 있습니까? 나는 잘 테스트 된 것들을 가지고 있지만, 나는 당신이 무엇을 열어 놓았는지 확인할 것입니다. – chrismead

+0

안녕하세요, chris, 저는 Linux와 OS X를 실행하고 있습니다. 비록이 문제를 해결하는 셀렌 스크립트라면 해결 방법에 대한 단서를 줄 수도 있습니다. 감사합니다 – bruno077

+0

내 스크립트는 Windows 스크립팅 호스트 스크립트입니다. TLS 1.0을 비활성화 해 보셨습니까? TLS가 작동하지 않는 경우 스크립트를 설명하는 답변을 추가하겠습니다. 그것들을 작동시키는 법을 아는 것은 고통 이었지만 꽤 간단합니다. 또한 사람들이 셀레늄에서 WaitForPopup 메서드를 토론하는 것을 보았습니다. 그러나 내가 본 것을 보았을 때 이미 작성했습니다. – chrismead

답변

2

이 문제에 대한 해결책을 찾는 과정에서 Capybara (v1.1.2)에서 버그를 발견했을 수도 있습니다.

capybara에서 click (예외를 포착 할 수 없음)을 사용하는 대신 다음 방법을 사용하여이 문제를 해결할 수있었습니다. 셀레늄 - webdriver에서 click 메서드를 사용하기 시작했습니다.파이어 폭스이 alertbox,이 페이지가 암호화되어 있지만 메시지

문자열을 트리거 할 때, 입력 한 정보가 암호화되지 않은 연결을 통해 전송되는 하고 쉽게 읽을 수 있다는 것

object.native.click의 결과로 반환되는 타사, 그렇지 않으면 문자열

,536,

ok

이 반환됩니다.

# Define the click method in ruby and call it when you're executing a 'click' 

    # Public: Click the object. 
    # 
    # object - Capybara::Node::Element object to click. 
    def click object 
    return_string = object.native.click 
    check_firefox_alertbox if return_string == "ok" 
    end 

    def check_firefox_alertbox 
    if @current_browser == :firefox 
    @session.driver.browser.switch_to.alert.accept 
    end 
    rescue Exception => e 
    puts e 
    end 
0

실제로 이것은 주석이되어야하지만 주석을 달 수 있으려면 50 이상이되어야합니다. 루비 스크립트의 실행을 '깨고'있다고 가정합니다. Firefox는 어떻게됩니까? 계속하려면 클릭이 필요합니까? 즉 당신이 시작하고 이런 구조 clause..Something 사이에 (어디 나누기) 민감한 코드를 삽입 한 후 루비 오류를 캡처하여 즉석에서 할 수있는 경우라면 ..

BEGIN 
    . 
    . 
    Code that is giving you a headache 
    . 
    . 
    RESCUE 
    . 
    Capture the exception and give Ruby a chance to continue the script normally. 
    . 
    . 
    END 

당신은하지 또는 경우 위의 해결책을 원한다면 Firefox로 가서 다음 주소 상자에 을 입력하십시오 : config. 'security.warn'로 필터링하고 거기에 표시되는 모든 부울 변수를 false로 설정하십시오. 좋은 속임수, 손가락이 교차됨)

1

다음은 수행 할 수있는 작업입니다. 파이어 폭스에 about:config을 입력하십시오. 여러 가지 옵션이 제시됩니다 (경고 메시지를 전달한 후).

security.warn_leaving_secure를 찾아야합니다. 및 security.warn_leaving_insecure. 둘 다 거짓으로 만드십시오. 그리고 당신은 잘 될 것입니다.

참고 : 수정 한 FF 인스턴스에서만 작동하므로이 인스턴스를 실행하려면 firefox 프로필을 사용해야합니다.

희망이 도움이됩니다.

관련 문제