2016-08-03 6 views
0

Итак, я хочу запускать свои тесты в Chrome вместо Firefox (потому что Chrome предлагает возможности мобильной эмуляции) при использовании драйвера Selenium с расширением Mink Behat.Behat-Mink, заставить драйвер Selenium использовать Chrome вместо Firefox

Я запускаю Selenium отдельно на тестовом сервере и выполняю тесты на локальной машине.

Итак, после запуска тестов Behat сеанс Chrome создан, но не используется, вместо этого создается другой параллельный сеанс Firefox и используется для запуска тестовых сценариев.

Я пробовал это также в среде с возможностями графического отображения, поэтому открывается новое окно Chrome, но в адресной строке отображается только data;;, после чего открывается окно Firefox и запускаются тесты.

Я бегу последнюю версию Chrome (52.0.2743.82), автономный сервер Selenium (2.53.1 - Java версия) и Chromedriver (2.22.397932)

Мой behat.yml содержит следующее:

default: 
    extensions: 
     Behat\MinkExtension: 
      browser_name: chrome 
      base_url: "<url to website>" 
      default_session: selenium_chrome_session 
      goutte: ~ 
      sessions: 
       selenium_chrome_session: 
        selenium2: 
         browser: chrome 
         wd_host: "http://<testing server host>:4444/wd/hub" 
         capabilities: 
          extra_capabilities: 
           chromeOptions: 
            args: 
             - "--start-maximized" 
             - "--test_type" 

После просмотра логфайла Selenium автономного сервера, я получаю следующий результат:

15:44:47.677 INFO [45] org.openqa.selenium.remote.server.DriverServlet - Executing: [new session: Capabilities [{chrome.switches=[--no-sandbox], browser=chrome, name=Behat feature suite, browserName=chrome, chrome.extensions=[], ignoreZoomSetting=false, chromeOptions={args=[--no-sandbox], extensions=[]}, version=, tags=[PHP 5.6.21-1~dotdeb+7.1]}]]) 
15:44:47.678 INFO [113] org.openqa.selenium.remote.server.DefaultDriverProvider - Creating a new session for Capabilities [{chrome.switches=[--no-sandbox], browser=chrome, name=Behat feature suite, browserName=chrome, chrome.extensions=[], ignoreZoomSetting=false, chromeOptions={args=[--no-sandbox], extensions=[]}, version=, tags=[PHP 5.6.21-1~dotdeb+7.1]}] 
15:44:48.021 INFO [45] org.openqa.selenium.remote.server.DriverServlet - Done: [new session: Capabilities [{chrome.switches=[--no-sandbox], browser=chrome, name=Behat feature suite, browserName=chrome, chrome.extensions=[], ignoreZoomSetting=false, chromeOptions={args=[--no-sandbox], extensions=[]}, version=, tags=[PHP 5.6.21-1~dotdeb+7.1]}]] 
15:44:48.035 INFO [45] org.openqa.selenium.remote.server.DriverServlet - Executing: [new session: Capabilities [{deviceType=tablet, selenium-version=2.31.0, browserVersion=9, browser=firefox, name=Behat Test, browserName=firefox, deviceOrientation=portrait, version=9, platform=ANY}]]) 
15:44:48.036 INFO [120] org.openqa.selenium.remote.server.FirefoxDriverProvider - Creating a new session for Capabilities [{deviceType=tablet, selenium-version=2.31.0, browserVersion=9, browser=firefox, name=Behat Test, browserName=firefox, deviceOrientation=portrait, version=9, platform=ANY}] 

Как вы можете видеть, Chrome сессия успешно с а затем новый сеанс Firefox создается впоследствии и используется для проведения тестов.

+0

Почему вы используете сеансы, у вас есть настройки для нескольких сеансов? – lauda

+0

Да, идея состоит в том, чтобы иметь мобильный сеанс и сеанс рабочего стола. – Shivox

+0

У вас есть собственный код, связанный с драйвером в FeatureContext? вы пытались установить разные профили для мобильных и настольных компьютеров? Также попробуйте удалить browser_name и посмотреть, что произойдет. – lauda

ответ

0

Если проблемы не из настроек yml, то у вас может быть некоторый код в классе FeatureContext, который отменяет ваш желаемый сеанс и запускает новый.

1

Вы можете передать браузер, который хотите использовать для автономного сервера selenium.

Здесь вы пример:

java -jar ./bin/selenium-server-standalone-2.53.1.jar -Dwebdriver.chrome.driver="./bin/chromedriver" 

Обратите внимание, вы можете использовать другой selenenium автономный сервер (файл JAR) и другой Chrome бен путь (-Dwebdriver.chrome.driver). Также убедитесь, что Chrome установлен, если вы тестируете свои веб-страницы на безголовом сервере.

0
java -Dwebdriver.chrome.driver="C:\bin\chromedriver_win32\chromedriver.exe" -jar selenium-server-standalone-3.3.1.jar 

, а также изменить в настройках и setUpBeforeClass метод

public static function setUpBeforeClass() { 
     if (null === self::$mink) { 
//   $app = require_once('../PATH_TO_YOUR/app.php'); 
//   $app['debug'] = true; 
//   $app['session.test'] = true; 
//   $app['exception_handler']->disable(); 

      self::$mink = new Mink(array(
       'selenium' => new Session(new Driver\Selenium2Driver('chrome', 'null', "http://google.com/")), 
      )); 
      self::$mink->setDefaultSessionName('selenium'); 
     } 
    } 

    protected function setUp() { 

     $this->setBrowser('chrome'); 
     $this->setBrowserUrl('http://google.com/'); 
    }