Я хочу использовать роботизированный фреймворк с Google Chrome. Как-то хромодрайвер не находит бинарник Google Chrome:
WebDriverException: Message: unknown error: cannot find Chrome binary
Когда я пытаюсь запустить свой тест с помощью firefox, он работает нормально. Я искал в сети некоторые решения, но нахожу только статьи, в которых указывается путь к chromedriver, но не к двоичному файлу Google Chrome.
Вот что я установил.
pybot --version
Robot Framework 3.0.4 (Python 3.5.4 on darwin)
Код для выполнения с помощью pybot: google.robot
*** Settings ***
Documentation Hello World for robotframwork with headless chrome
Library SeleniumLibrary
#Library OperatingSystem
#Suite Setup Setup chromedriver
### https://stackoverflow.com/questions/28537290/how-to-set-path-chrome-driver-in-robot-framework
#*** Keywords ****
#Setup chromedriver
#Set Environment Variable webdriver.chrome.driver /usr/local/bin/chromedriver
#Set Environment Variable webdriver.chrome.binary /Applications/Chrome.app/Contents/MacOS/Google\ Chrome
*** Test Cases ***
User shall call google and make a screenshot
[Documentation] First test
[Tags] Headless
#Open Browser https://google.com ff
Open Browser https://google.com gc
#Open Browser https://google.com headlesschrome
Capture Page Screenshot
Close All Browsers
Когда я запускаю этот код, я получаю следующее:
pybot google.robot
==============================================================================
Google :: Hello World for robotframwork with headless chrome
==============================================================================
User shall call google and make a screenshot :: First test | FAIL |
WebDriverException: Message: unknown error: cannot find Chrome binary
(Driver info: chromedriver=2.43.600229 (3fae4d0cda5334b4f533bede5a4787f7b832d052),platform=Mac OS X 10.11.6 x86_64)
------------------------------------------------------------------------------
Google :: Hello World for robotframwork with headless chrome | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
Output: /Users/foo/workspace/robotframework/output.xml
Log: /Users/foo/workspace/robotframework/log.html
Report: /Users/foo/workspace/robotframework/report.html
Если вы в командной строке набираете chrome
и нажимаете return, запускается ли Chrome?
@BryanOakley, что он проверит, запускается ли Chrome ИЛИ не после нажатия команды в Chrome?
Проверить это обсуждение stackoverflow.com/questions/50138615/…
@DebanjanB упомянутое обсуждение не описывает, как я использую его в робототехнике. Мне непонятно, куда интегрировать этот хак.
@Dev - он проверит, находится ли chrome
на вашем пути. Если он не запускается и вместо этого выдает ошибку, значит, его явно нет в вашем PATH.
В OSX Chrome находится в /Applications/Chrome.app/Contents/MacOS/Google Chrome
. Я добавил каталог к пути и добавил псевдоним chrome
/ Chrome
для Google Chrome
. В моей оболочке Chrome открывается, когда я использую команды псевдонима, но он не работает для моего теста pybot. Все еще то же сообщение об ошибке. Немного странно добавлять псевдоним, чтобы можно было получить доступ к стандартной установке Chrome ... Имеет ли значение, что я использую zsh в качестве оболочки? Где я могу получить информацию, в каких местах chromedriver проверяет местоположение Chrome
?
Раньше была ошибка в селене, он не мог обработать путь с пробелами. Не знаю, исправили ли это (можно погуглить). Но в этом случае следует указать путь к двоичному файлу chrome. Проверьте это решение: stackoverflow.com/a/45503916/5318223
@jerik Для получения информации о какие местоположения chromedriver проверяет местоположение Chrome проверьте обсуждения Как в Selenium исполняемый файл ChromeDriver находит браузер Chrome? и Какое расположение по умолчанию для ChromeDriver и для установки Chrome в Windows
@DebanjanB отличный намек! Я изменил расположение Chrome в файловой системе с /Applications/Chrome.app/Contents/MacOS/Google Chrome
на /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
. Это помогло. Теперь все работает как положено. На основе информации Как в Selenium исполняемый файл ChromeDriver находит браузер Chrome?> Требования к хромированной отвертке
Основываясь на комментарии @DebanjanB, я нашел свое решение.
Хромированный драйвер ищет браузер Chrome в OSX по адресу
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Chrome был установлен на моем OSX на:
/Applications/Chrome.app/Contents/MacOS/Google Chrome
В моей файловой системе я переименовал Chrome.app
в Google Chrome.app
, и с этого момента все заработало. Для любой другой ОС см. Требования к хромированной отвертке
Chrome в стандартном месте? пробелы в хромированном пути?