2017-12-21 28 views
12

매우 복잡한 설정을 사용하여 다양한 비공개 웹 페이지를 테스트하고 있습니다. docker 이미지 내에서 python-selenium 테스트를 실행하려면 jenkins을 사용합니다. 그렇게하면 젠킨스 환경과 완전히 독립적으로 자신 만의 환경을 만들 수 있습니다. 이러한 환경에서 나는 다음과 같은 소프트웨어를 설치 한 :"WebDriverException : Message : connection refused"를 수정하는 방법?

  • 파이어 폭스 : 57.0.1
  • geckodriver : 0.18.0
  • nosetests : 1.3.7
  • 셀레늄 : 3.8.0

셀레늄 테스트는 을 다음과 같이 만듭니다.

profile = webdriver.FirefoxProfile() 
profile.set_preference("browser.download.dir", self.downloadpath) 
profile.set_preference("browser.download.folderList", 2) 
profile.set_preference("browser.download.useDownloadDir", True) 
profile.set_preference("browser.download.manager.showWhenStarting", False) 
profile.set_preference("pdfjs.disabled", True) 
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", 
"application/force-download, image/png, text/html, text/plain, " 
"image/tiff, text/csv, application/zip, application/octet-stream") 
profile.set_preference("browser.download.manager.alertOnEXEOpen", False) 
profile.set_preference("browser.download.manager.focusWhenStarting", False) 
profile.set_preference("browser.helperApps.alwaysAsk.force", False) 
profile.set_preference("browser.download.manager.alertOnEXEOpen", False) 
profile.set_preference("browser.download.manager.closeWhenDone", True) 
profile.set_preference("browser.download.manager.showAlertOnComplete", False) 
profile.set_preference("browser.download.manager.useWindow", False) 
profile.set_preference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", 
False) 
self.driver = webdriver.Firefox(profile, log_path = logfile) 

여기서 logfileself.downloadpath은 도커 설정에서 두 개의 유효한 경로입니다.

전체 테스트 스위트는 6 개의 독립적 인 테스트 케이스로 구성되며 각각은 위와 동일한 설정을 사용합니다. 그들은 정상적으로 문제없이 잘 작동합니다.

그러나 시험 또는 일반 설정에이 테스트는 때때로 다음과 같은 오류 메시지와 함께 실패 변경없이 :

  1. 무엇 연결 :

    File "/root/tests/bsp_usecase_tests/tools/basicsuite.py", line 210, in set_driver_firefox 
        self.driver = webdriver.Firefox(profile, log_path = logfile) 
        File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 158, in __init__ 
        keep_alive=True) 
        File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 154, in __init__ 
        self.start_session(desired_capabilities, browser_profile) 
        File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 243, in start_session 
        response = self.execute(Command.NEW_SESSION, parameters) 
        File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 311, in execute 
        self.error_handler.check_response(response) 
        File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 237, in check_response 
        raise exception_class(message, screen, stacktrace) 
    WebDriverException: Message: connection refused 
    

    나는이 개 질문이 여기에 거부됩니까? 오류 메시지의 의미는 무엇입니까

  2. 어떻게이 오류를 해결할 수 있습니까?

부록 : 난 그냥 webdriver.Firefox 라인 전에 time.sleep(10)을 사용

  • , 오류가 더 이상 나타나지 않았다. Shoud 나는 while-try-except 루프에 그 라인을 넣었습니까?
+0

셀렌 테스트를 실행하기 위해 가상 디스플레이를 사용합니까? Afaik jenkins는 헤드리스 환경에서 실행되기 때문에 firefox 드라이버를 인스턴스화하려면'Xvfb'가 필요합니다. 최신 버전의 파이어 폭스는 헤드리스 환경에서도 작동 할 수 있습니다. 사용하려면 옵션에서 플래그를 전달해야합니다 :'opts = selenium.webdriver.firefox.options.Options(); opts.add_argument ('- headless'); driver = webdriver.Firefox (firefox_profile = 프로필, firefox_options = opts)'. – hoefling

+0

이 오류/스택 추적은 드라이버가 파이썬 클라이언트와 통신하기 위해 내부 서버를 시작하지 못했음을 나타냅니다. 생성 된 포트 번호에서 경쟁 조건이 될 수도 있고, 다음 검사가 시작될 때 시간에 따라 재활용되지 않는 메모리가 부족할 수도 있습니다. 어떤 경우 든 문제는 재현 가능한 예와 게시물에없는 OS, 브라우저 및 드라이버의 로그 분석이 필요합니다. –

답변