Какие версии Chromium, Selenium и Chromedriver необходимы для запуска Selenium на Chromebook? - PullRequest
0 голосов
/ 26 июня 2018

Я хочу запустить тесты Selenium с помощью Chromedriver на Chromebook, и я не могу заставить его работать.

Настройка
У меня установлены гренки и хромово-кофейные . У chromebrew есть пакеты для virtualenv и Python3.6, плюс с pip install Selenium я получил Selenium. Из документации ChromeDriver ChromeOS Я знаю, что хром-драйвер находится в /usr/local/chromedriver. Называя это:

chronos@localhost /usr/local/chromedriver $ chromedriver 
Starting ChromeDriver 2.24 on port 9515
Only local connections are allowed.

дает мне версию, и я только хочу проверить localhost, поэтому я в порядке и имею:

Versions:  
ChromiumOS 55.0.2883.100 (64-bit)  
Python 3.6  
Selenium bindings for Python 3.13.0  
Chromedriver 2.24  

Я (кажется, я) понимаю, что Chromedriver ведет себя как сервер на порту 9515, ожидая звонков с test.py. Я возился до тех пор, пока у меня не осталось больше ошибок из-за отсутствия хромедрайвера / разрешений / и т. Д.

Тестовый файл
Мой тестовый файл содержит только:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
chrome_options.binary_location = '/etc/chromium.exe'

driver = webdriver.Chrome('/usr/local/chromedriver/chromedriver', chrome_options=chrome_options)
driver.get("http://localhost:8000")

Если я позвоню python3 test.py или get("http://localhost:8000"), ничего не произойдет, и при моем вызове python3 я в итоге получу:

Traceback (most recent call last):
  File "test.py", line 6, in <module>
    driver = webdriver.Chrome('/usr/local/chromedriver/chromedriver', chrome_options=chrome_options)
  File "/usr/local/demo/venv/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 75, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/demo/venv/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 156, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/demo/venv/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 251, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/demo/venv/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 320, in execute
    self.error_handler.check_response(response)
  File "/usr/local/demo/venv/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: chrome not reachable
  (Driver info: chromedriver=2.24,platform=Linux 3.14.0 x86_64)

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

import time

from selenium import webdriver
import selenium.webdriver.chrome.service as service

service = service.Service('/usr/local/chromedriver/chromedriver')
service.start()
capabilities = {'chrome.binary': '/etc/chromium.exe'}
driver = webdriver.Remote(service.service_url, capabilities)
driver.get('http://localhost:8000');
time.sleep(5) # Let the user actually see something!
driver.quit()

Вы увидите, что я сменил Chrome на собственные возможности Chromium. Из документации chromedriver и этого SO ответа это способ заменить бинарный файл Chrome по умолчанию на пользовательский.

Из этой проблемы github я понимаю, что проблема может заключаться в том, что версии компонентов не очень хорошо сочетаются друг с другом, но документация Chromedriver , на которую он указывает, не очень подскажите с чего начать искать какие версии попробовать.

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

1 Ответ

0 голосов
/ 27 июня 2018

Это сообщение об ошибке ...

selenium.common.exceptions.WebDriverException: Message: chrome not reachable

... означает, что ChromeDriver не смог инициировать / создать новый WebBrowser , т.е. Браузер Chrome сеанс.

Существует множество возможностей, помимо этой ошибки:

  • Поскольку вы работаете в ОС Linux , когда вы упоминаете абсолютный путь двоичного файла хром , вам нужно удалить расширение, т. Е. .exe, следующим образом:

    chrome_options.binary_location = '/etc/chromium'
    
  • При инициализации сеанса просмотра Chrome необходимо передать оба аргумента chrome_options и executetable_path следующим образом:

    driver = webdriver.Chrome(executable_path='/usr/local/chromedriver/chromedriver', chrome_options=chrome_options)
    
  • Как и обычный Браузер Chrome релизы GA, Chrome Team действительно выпускает бинарные файлы ChromeDriver с добавленными / измененными функциональными возможностями наряду с поддерживаемой поддержкой Браузер Chrome версии. Необходимо убедиться, что используемые вами двоичные файлы chrome и chromedriver синхронизированы в соответствии с примечаниями к выпуску .

Соответствующее обсуждение версий можно найти в Selenium for ChromeDriver and Chrome Browser

Тем не менее, ваша главная проблема - несовместимость между версиями используемых вами двоичных файлов:

  • Вы используете chromedriver = 2,24
  • Примечания к выпуску chromedriver = 2.24 четко упоминает следующее:

Поддержка Chrome v52-54

  • Вы используете хром = 55,0
  • Примечания к выпуску ChromeDriver v2.27 четко упоминает следующее:

Поддержка Chrome v54-56

Таким образом, существует явное несоответствие между ChromeDriver v2.24 и Chrome Browser v55.0

Решение

...