2017-12-06 10 views
0

Capybara가 스핀 업 한 Chrome 인스턴스에서 onbeforeunload에서 생성되는 대화 상자를 사용하지 않으려합니다. 나는 매우 큰 테스트 스위트를 가지고 있으며, 모든 방문/새로 고치기를 수정하여 'Leave'확인을 클릭하는 코드를 포함시키는 것은 비현실적입니다.테스트를 방해하지 않도록 사전 디버깅 대화 상자가 표시되지 않습니다.

방문 및 새로 고침 전에 page.execute_script ‘window.onbeforeunload = undefined;’을 추가하려고 시도했지만이 방법은 내 방문 및 새로 고침 호출을 모두 수정해야하는 문제를 공유합니다.

이 기능을 사용 중지하기 위해 추가 할 수있는 Chrome CLI 옵션이 있는지 확인했지만 관련 항목을 찾지 못했습니다. 나는 여기에서 점검했다 : https://peter.sh/experiments/chromium-command-line-switches/ 그러나 언로드, 경고 및 대화 상자를 찾은 후에, 일치하는 것은 아무 것도 없어 보였다.

저는 Chromedriver v2.33, Chrome 62, Capybara 2.5 및 Selenium-webdriver 2.53.4입니다. 필요한 경우이 정보를 추가 정보로 업데이트합니다.

이것이 가능합니까?

답변

0

는 카피 바라 visitrefresh 방법은 항상 전화를 확인하기 위해 execute_script 먼저 가장 쉬운 해결책이 될 것을

module BeforeUnloadDisabler 
    def visit(*args) 
    execute_script 'window.onbeforeunload = undefined;' 
    super 
    end 

    def refresh(*args) 
    execute_script 'window.onbeforeunload = undefined;' 
    super 
    end 
end 

::Capybara::Session.prepend(BeforeUnloadDisabler) 

같은,하지만 앱이 많은 당신이 당신의 설계 선택을 재고 할 수 있다는 beforeunload 경고를 등록하는 경우 - - 그것은 사용자들에게는 정말 귀찮은 일이 될 수 있습니다.