Если я указываю chrome_options, то он висит:Селен chromedriver зависает, если я указываю данных пользователя-Dir в настройках Chrome
params = {'executable_path': path_to_driver}
if self._chrome_options is not None:
params['chrome_options'] = self._chrome_options
print "# before construct"
self._driver = webdriver.Chrome(**params)
print "# after construct"
Таким образом, сообщение after_construct
не показано. В chrome_options
я передал строку:
user-data-dir=/home/sergzach/.config/google-chrome
Таким образом, Chrome начинает и входя в мой нормальный профиль. Но сценарий Python
зависает при построении self._driver
, и я не могу продолжать работать с скриптом Python.
Если я не сдал self._chrome_options
(None
), то все в порядке: Хром запуск и выполнение будет дальше (как before_construct
и after_construct
печати).
Если я прохожу пустой chrome_options
:
webdriver.ChromeOptions()
тогда он не свисал.
Установленная версия Chrome: версия 55.0.2883.75 (64-битный)
WebDriver: 2.25.426924
ОС: Ubuntu .
Update
Существует отслеживающий (она поднимает примерно 20 секунд после того, как скрипт зависает):
File "test.py", line 6, in <module> w.start() File "/usr/local/lib/python2.7/dist-packages/walker/walker.py", line 164, in start self._driver = webdriver.Chrome(**params) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/chrome/webdriver.py", line 70, in __init__ desired_capabilities=desired_capabilities) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 92, in __init__ self.start_session(desired_capabilities, browser_profile) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 179, in start_session response = self.execute(Command.NEW_SESSION, capabilities) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute self.error_handler.check_response(response) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally (Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 4.2.0-42-generic x86_64
Update
Это вызывает, потому что Chrome не удается подключиться к удаленному отладчику. Я вывода журнала:
... params.update(service_args=['--verbose']) params.update(service_log_path='/tmp/selenium.log') ... self._chrome_options.add_argument("--verbose") ...
И я вижу reason. Но я не понимаю, как отключить опцию --remote-debugging-port=xxxx
, которая переходит на драйвер chrome. Хорошо, давайте проанализируем источники дальше.
Какова ценность 'self._chrome_options'? – alecxe
@alecxe Он работает нормально со значением 'webdriver.ChromeOptions()', но если я делаю 'self._chrome_options.add_argument (« user-data-dir =/home/sergzach/.config/google-chrome »)' then он висит. – sergzach
@alecxe Да, я попробовал также 'chown -R sergzach: sergzach' каталог. Результат такой же. – sergzach