В среде Heroku Only Dev имеется Chrome версия 81 - PullRequest
2 голосов
/ 10 апреля 2020

Я использую героку с селеном с герою / google-chrome и сборку героку / хромедрайвера. Недавно было обновлено google chrome и обновлен пакет сборки google-chrome.

РЕДАКТИРОВАТЬ: я вижу в моем экземпляре dev, что

/app/.apt/opt/google/chrome/chrome --version
Google Chrome 80.0.3987.163 unknown

, но в моем экземпляре prod, который работает

Google Chrome 81.0.4044.92 unknown

Так что вопрос в том, как заставить версию здесь на heroku?

Старая информация ниже, которая, вероятно, сейчас менее актуальна.

Однако я теперь я вижу chrome ошибок версии, несмотря на это, но ТОЛЬКО на моем экземпляре dev. Когда я создаю напрямую с производственным экземпляром, он работает нормально. Тем не менее, мой типичный процесс состоит в том, чтобы собрать и протестировать с моим экземпляром dev, а затем распространить эту точную сборку на производственный экземпляр, который теперь будет продвигать поврежденную сборку.

Вот ошибка:

2020-04-09T22:20:56.505318+00:00 app[celery_worker.1]: [2020-04-09 22:20:56,504: ERROR/ForkPoolWorker-1] Task ... raised unexpected: SessionNotCreatedException('session not created: This version of ChromeDriver only supports Chrome version 81', None, None)
...
2020-04-09T22:20:56.505336+00:00 app[celery_worker.1]: 'CHROMEDRIVER_PATH', ''), chrome_options=chrome_options)
2020-04-09T22:20:56.505336+00:00 app[celery_worker.1]: File "/app/.heroku/python/lib/python3.6/site-packages/seleniumwire/webdriver/browser.py", line 88, in __init__
2020-04-09T22:20:56.505337+00:00 app[celery_worker.1]: super().__init__(*args, **kwargs)
2020-04-09T22:20:56.505337+00:00 app[celery_worker.1]: File "/app/.heroku/python/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
2020-04-09T22:20:56.505338+00:00 app[celery_worker.1]: desired_capabilities=desired_capabilities)
2020-04-09T22:20:56.505338+00:00 app[celery_worker.1]: File "/app/.heroku/python/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
2020-04-09T22:20:56.505339+00:00 app[celery_worker.1]: self.start_session(capabilities, browser_profile)
2020-04-09T22:20:56.505339+00:00 app[celery_worker.1]: File "/app/.heroku/python/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
2020-04-09T22:20:56.505339+00:00 app[celery_worker.1]: response = self.execute(Command.NEW_SESSION, parameters)
2020-04-09T22:20:56.505340+00:00 app[celery_worker.1]: File "/app/.heroku/python/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
2020-04-09T22:20:56.505340+00:00 app[celery_worker.1]: self.error_handler.check_response(response)
2020-04-09T22:20:56.505341+00:00 app[celery_worker.1]: File "/app/.heroku/python/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
2020-04-09T22:20:56.505342+00:00 app[celery_worker.1]: raise exception_class(message, screen, stacktrace)
2020-04-09T22:20:56.505342+00:00 app[celery_worker.1]: selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 81

Насколько я могу судить, мой экземпляр dev по сути точно такой же, как мой производственный экземпляр, но, очевидно, это не тот случай. Пакеты buildpacks и needs.txt абсолютно одинаковы, а журналы сборки практически идентичны. Я видел это различие в журналах сборки, версия dev имеет:

-----> Installing libasound2_1.1.3-5ubuntu0.2_amd64.deb
-----> Installing libasound2_1.1.3-5ubuntu0.4_amd64.deb
-----> Installing libasound2-data_1.1.3-5ubuntu0.2_all.deb
-----> Installing libasound2-data_1.1.3-5ubuntu0.4_all.deb

, но рабочая версия имеет только

-----> Installing libasound2_1.1.3-5ubuntu0.4_amd64.deb
-----> Installing libasound2-data_1.1.3-5ubuntu0.4_all.deb

Это похоже на красную сельдь.

Вот, вероятно, актуальная проблема из пакета сборки heroku / google-chrome: https://github.com/heroku/heroku-buildpack-google-chrome/pull/85

Кто-нибудь еще видел это и знает, как заставить работать сборку для разработчиков или как заставить селен снова работать над герою?

1 Ответ

2 голосов
/ 10 апреля 2020

Я разобрался с исправлением, вам нужно сбросить кэш

$ heroku plugins:install heroku-repo

$ heroku repo:purge_cache -a appname

, а затем заново развернуть его с пустым коммитом или развернуть с мастера.

Причина, по которой он только сработал на dev потому что я никогда не строил свой рабочий стек и в результате у него не было кеша старой chrome версии.

https://help.heroku.com/18PI5RSY/how-do-i-clear-the-build-cache

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...