Есть ли способ сообщить Selenium Runner, где драйвер использует командную строку? - PullRequest
3 голосов
/ 09 июля 2019

Я только что установил Selenium Runner на мой Mac (Mojave), но позже я также буду запускать его на CentOS 7. Можно ли как-то указать моему процессу путь к хроматридеру, когда я запускаю его из командной строки? В настоящее время я запускаю его так ...

/usr/local/bin/selenium-side-runner /tmp/0ba4e59f-53d5-43ff-b7ff-127499868cf3.side

но получаю эту ошибку

  ● Test suite failed to run

    The ChromeDriver could not be found on the current PATH. Please download the latest version of the ChromeDriver from http://chromedriver.storage.googleapis.com/index.html and ensure it can be found on your PATH.

После прочтения здесь инструкций - https://www.seleniumhq.org/selenium-ide/docs/en/introduction/command-line-runner/, много говорят о добавлении пути к драйверу в переменной среды PATH. Однако я запускаю свой сценарий из отдельного процесса, который «не имеет доступа к моей переменной PATH», поэтому я хотел бы немного больше контролировать, как сообщить «Selnium Runner», где находится драйвер.

Редактировать: Используя решение Таруна, я получаю следующий странный результат ...

localhost:selenium davea$ selenium-side-runner  -c "chromeOptions.binary='/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'" myTestFile.side
info:    Running myTestFile.side
 FAIL  ./DefaultSuite.test.js
  ● Test suite failed to run

    TypeError: Target browser must be a string, but is <undefined>; did you forget to call forBrowser()?

Редактировать 2:

Содержимое моего файла ".side.yml" и путь к chromedriver ...

localhost:selenium davea$ cat .side.yml 
capabilities:
  browserName: 'chrome'
  chromeOptions:
    binary: '/Users/davea/Documents/workspace/starter_project/selenium/chromedriver_mac'
  firefoxOptions:
    binary: '/Users/davea/Documents/workspace/starter_project/selenium/geckodriver_mac'

localhost:selenium davea$ ls -al /Users/davea/Documents/workspace/starter_project/selenium/chromedriver_mac
-rwxr-xr-x 1 davea staff 14994520 Jun 11 19:42 /Users/davea/Documents/workspace/starter_project/selenium/chromedriver_mac

И все же я получаю тот же результат, что жалоба на драйвер не найдена ...

localhost:selenium davea$ selenium-side-runner myTestSpike.side 
info:    Running myTestSpike.side
 FAIL  ./DefaultSuite.test.js
  ● Test suite failed to run

    The ChromeDriver could not be found on the current PATH. Please download the latest version of the ChromeDriver from http://chromedriver.storage.googleapis.com/index.html and ensure it can be found on your PATH.

Ответы [ 3 ]

2 голосов
/ 12 июля 2019

Вы можете попробовать ChromeOptions класс .Вы можете создать экземпляр ChromeOptions, который имеет удобные методы для настройки возможностей, специфичных для ChromeDriver.

// Create ChromeOptions instance
ChromeOptions options = new ChromeOptions();

// Set your custom path of the chrome driver to the options
options.setBinary("/path/to/chrome/binary");

// Pass the options object to the ChromeDriver instance
ChromeDriver driver = new ChromeDriver(options);

Начиная с версии Selenium 3.6.0, класс ChromeOptions в Java также реализует интерфейс Capabilities, позволяющий указатьдругие возможности WebDriver, не относящиеся к ChromeDriver.

ChromeOptions options = new ChromeOptions();
// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);

// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Пожалуйста, пройдите по этой ссылке, чтобы узнать больше возможностей Возможности и ChromeOptions

Ссылка на эту ссылку Средство запуска командной строки .

Возможности Chrome Если у вас установлен Chrome в нестандартном месте на вашем компьютере, вы можете указать путь, чтобы ChromeDriver знал, где искать.

selenium-side-runner -c "chromeOptions.binary='/path/to/non-standard/Chrome/install'"

Благодаря специальным возможностям Chrome вы также можете запускать тесты без головы.

selenium-side-runner -c "chromeOptions.args=[disable-infobars, headless]"
0 голосов
/ 12 июля 2019

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

env "webdriver.chrome.driver=/path/to/chromedriver" /usr/local/bin/selenium-side-runner /tmp/0ba4e59f-53d5-43ff-b7ff-127499868cf3.side
0 голосов
/ 12 июля 2019

Если вы видите их readme, они указывают, как сделать то же самое

https://www.npmjs.com/package/selenium-side-runner

selenium-side-runner -c "chromeOptions.binary='/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'"

Вы даже можете создать .side.yml и сохранить там параметры

capabilities:
  browserName: 'chrome'
  chromeOptions:
    binary: '/path/to/chromedriver'

См. Мои обновления в другом вопросе, связанном с этим

Как запустить моего бегуна на стороне селена, чтобы выполнить мой тест с Firefox?

...