Я использую очень сложную настройку для тестирования различных непубличных веб-страниц. Я использую jenkins
для запуска тестов python-selenium
в формате docker
. Таким образом, я полностью независим от среды jenkins и могу создать свою собственную среду. В этой среде у меня установлено следующее программное обеспечение:
- Firefox: 57.0.1
- geckodriver: 0.18.0
- nosetests: 1.3.7
- selenium: 3.8.0
Тесты селена создают WebDriver
следующим образом:
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
У меня есть два вопроса:
- Отключена ли здесь связь? В чем смысл сообщения об ошибке
- Как я могу исправить эту ошибку?
Добавление
- Когда я использовал
time.sleep(10)
непосредственно перед строкойwebdriver.Firefox
, ошибка больше не отображалась. Shoud Я положил эту строку в цикл while-try-except?