2017-01-30 6 views
1

Если я указываю 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. Хорошо, давайте проанализируем источники дальше.

+0

Какова ценность 'self._chrome_options'? – alecxe

+0

@alecxe Он работает нормально со значением 'webdriver.ChromeOptions()', но если я делаю 'self._chrome_options.add_argument (« user-data-dir =/home/sergzach/.config/google-chrome »)' then он висит. – sergzach

+0

@alecxe Да, я попробовал также 'chown -R sergzach: sergzach' каталог. Результат такой же. – sergzach

ответ

1

Только один клиент может быть подключен к отладчику за один раз. Поэтому, чтобы исправить эту проблему, когда мы хотим войти в профиль пользователя с помощью отладчика - чтобы избежать зависания хромированной решетки, пытающейся подключиться к отладчику, мы должны закрыть существующий сеанс Chrome (я делю еще раз).

+0

Ах, всегда сталкивайтесь с этой проблемой, не смог распознать ее по этим симптомам. Спасибо, что поделился! – alecxe

 Смежные вопросы

  • Нет связанных вопросов^_^