WebDriverException () в Python2.7 с использованием xvfb-run для chrome в Amazon Linux AMI Red-hat 7.2 - PullRequest
0 голосов
/ 20 декабря 2018

Попытка запустить селен для chrome через

/usr/bin/xvfb-run -a -e /tmp/selenium.log -w 0 /usr/bin/python2.7 

и получить сообщение об ошибке типа

(<class 'selenium.common.exceptions.WebDriverException'>, WebDriverException(), <traceback object at 0x7fc7cfc9c128>)

странно то, что я даже не получаю полную трассировку стека и параметр -eдля xvfb-run также не возвращает никаких ошибок в файле.

Вот мой код

from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 
f = webdriver.ChromeOptions() 
browser =webdriver.Chrome(executable_path='/home/local/chromedriver',chrome_options=f) 
browser.get(url)
browser.quit()

Я также попытался с executable_path='/usr/bin/chromedriver' и без executetable_path

, но получаюта же ошибка.

изначально он работал с python 2.6 с firefox .

я проверял около 10-15 + похожих вопросов даже о том, как включить больше трассировки или отладки, но ни один изРешения, кажется, делают свое дело для меня здесь.

Селен версия 3.141.0

Редактировать: я обновил некоторый код, чтобы иметь возможность получить полную трассировку стека, и я получил эту ошибку,

WebDriverException: Сообщение. Похоже, что браузер завершил работу, прежде чем мы смогли подключиться.

немного больше копал и увидел, что это связано с селеном / браузером, установленным старой версией селена версии 2.53

, таким образом, вышеупомянутая ошибка исчезла, но теперь я получаю сброс соединения по ошибке однорангового узла для всего,ниже находится стек

(<class 'socket.error'>, error(104, 'Connection reset by peer'), <traceback object at 0x1e1e320>)
Traceback (most recent call last):
  File "/var/www/Goose/src/goose/network.py", line 137, in get_html
    browser.get(url)
  File "/var/www/Goose/src/selenium/webdriver/remote/webdriver.py", line 245, in get
    self.execute(Command.GET, {'url': url})
  File "/var/www/Goose/src/selenium/webdriver/remote/webdriver.py", line 231, in execute
    response = self.command_executor.execute(driver_command, params)
  File "/var/www/Goose/src/selenium/webdriver/remote/remote_connection.py", line 395, in execute
    return self._request(command_info[0], url, body=data)
  File "/var/www/Goose/src/selenium/webdriver/remote/remote_connection.py", line 426, in _request
    resp = self._conn.getresponse()
  File "/usr/lib64/python2.6/httplib.py", line 1049, in getresponse
    response.begin()
  File "/usr/lib64/python2.6/httplib.py", line 433, in begin
    version, status, reason = self._read_status()
  File "/usr/lib64/python2.6/httplib.py", line 389, in _read_status
    line = self.fp.readline(_MAXLINE + 1)
  File "/usr/lib64/python2.6/socket.py", line 479, in readline
    data = self._sock.recv(self._rbufsize)
error: [Errno 104] Connection reset by peer

, даже requests [security] установлен, как я видел одну причину, чтобы быть.

1 Ответ

0 голосов
/ 30 декабря 2018

решил, проблема заключалась в том, что браузер chrome и драйверы не были установлены должным образом, а их версии несовместимы,

установил последнюю версию Chrome для запуска на сервере ami, используя скрипт, полученный из https://intoli.com/blog/installing-google-chrome-on-centos/

установлен отлично, добавил несколько ключевых аргументов,

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('path to driver',chrome_options=chrome_options)

и альт начал работать,

...