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)
여기서 logfile
과 self.downloadpath
은 도커 설정에서 두 개의 유효한 경로입니다.
전체 테스트 스위트는 6 개의 독립적 인 테스트 케이스로 구성되며 각각은 위와 동일한 설정을 사용합니다. 그들은 정상적으로 문제없이 잘 작동합니다.
그러나 시험 또는 일반 설정에이 테스트는 때때로 다음과 같은 오류 메시지와 함께 실패 변경없이 :
- 무엇 연결 :
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
나는이 개 질문이 여기에 거부됩니까? 오류 메시지의 의미는 무엇입니까
- 어떻게이 오류를 해결할 수 있습니까?
부록 : 난 그냥 webdriver.Firefox
라인 전에 time.sleep(10)
을 사용
- , 오류가 더 이상 나타나지 않았다. Shoud 나는 while-try-except 루프에 그 라인을 넣었습니까?
셀렌 테스트를 실행하기 위해 가상 디스플레이를 사용합니까? Afaik jenkins는 헤드리스 환경에서 실행되기 때문에 firefox 드라이버를 인스턴스화하려면'Xvfb'가 필요합니다. 최신 버전의 파이어 폭스는 헤드리스 환경에서도 작동 할 수 있습니다. 사용하려면 옵션에서 플래그를 전달해야합니다 :'opts = selenium.webdriver.firefox.options.Options(); opts.add_argument ('- headless'); driver = webdriver.Firefox (firefox_profile = 프로필, firefox_options = opts)'. – hoefling
이 오류/스택 추적은 드라이버가 파이썬 클라이언트와 통신하기 위해 내부 서버를 시작하지 못했음을 나타냅니다. 생성 된 포트 번호에서 경쟁 조건이 될 수도 있고, 다음 검사가 시작될 때 시간에 따라 재활용되지 않는 메모리가 부족할 수도 있습니다. 어떤 경우 든 문제는 재현 가능한 예와 게시물에없는 OS, 브라우저 및 드라이버의 로그 분석이 필요합니다. –