Я хочу запустить тесты 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 , на которую он указывает, не очень подскажите с чего начать искать какие версии попробовать.
Я думаю, что я охватил все случаи, кроме несовместимых версий, поэтому вопрос в том, кто может сказать мне, какая версия может заставить это работать?