Как я могу использовать Behat 3.1 с Selenium 3.6 и Mink?


Я безуспешно пытался создать несколько тестов с Behat 3.1, Selenium 3.6 и Mink ... Я понятия не имею, как я могу решить эту проблему: если я запускаю команду php bin/behat, мой Firefox запускается, но мой сайт не загружается. Через несколько минут я получаю сообщение об ошибке:

Сценарий: посещение страницы входа
Учитывая, что я нахожусь в '/ login'
Не удалось открыть соединение: java.lang.reflect.InvocationTargetException

Информация о сборке: версия: '3.6.0', ревизия: '6fbf3ec767', время: '2017-09-27T16: 15: 40.131Z'

Информация о системе: хост: 'xxx.xxx.xxx.xxx', ip: 'xxx.xxx.xxx.xxx' , os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10 .13 ', java.version:' 1.8.0_72 '

Информация о драйвере: driver.version: unknown (Behat \ Mink \ Exception \ DriverException)

Когда я нажимаю "Startseite"
Я должен увидеть "einloggen"

Мой behat.yml

# behat.yml
default:
  autoload: %paths.base%/features/bootstrap
  extensions:
    Behat\Symfony2Extension: ~
    Behat\MinkExtension:
      base_url: http://myWebsite
      default_session: selenium2
      selenium2:
        browser: firefox
        wd_host: http://127.0.0.1:4444/wd/hub
        capabilities: { "platform": 'MAC', "browser": 'firefox', "version": '56' }

Мой FeatureContext.php

use Behat\Behat\Context\Context;
use Behat\MinkExtension\Context\MinkContext;
use Behat\Gherkin\Node\PyStringNode;
use Behat\Gherkin\Node\TableNode;

class FeatureContext extends MinkContext implements Context
{

    public function __construct()
    {

    }

    /**
     * @Given I am on :arg1
     */
    public function iAmOn($arg1)
    {
        $this->visit($arg1);
    }

    /**
     * @When I press :arg1
     */
    public function iPress($arg1)
    {
        $this->getSession()
            ->getPage()
            ->findButton($arg1)
            ->press();
    }

    /**
     * @Then I should see :arg1
     */
    public function iShouldSee($arg1)
    {
        $this->assertPageContainsText($arg1);
    }
}

Мой логин. Функция

Feature: login page
    In order to see login contens
    As a user
    I am able to visit login page

    @javascript @login
    Scenario: visit login page
        Given I am on '/login'
        When  I press 'Startseite'
        Then  I should see 'einloggen'

Мой GuiContext

    use Behat\Behat\Context\BehatContext;
    use Behat\Gherkin\Node\PyStringNode;

    use Behat\Mink\Mink,
        Behat\Mink\Session,
        Behat\Mink\Driver\Selenium2Driver,
        Behat\MinkExtension\Context\MinkContext;

    use Nearsoft\SeleniumClient as SeleniumClient;

    require_once 'PHPUnit/Autoload.php';
    require_once 'PHPUnit/Framework/Assert/Functions.php';

    class GuiContext extends MinkContext
    {

        public function __construct(array $parameters)
        {
            $mink = new Mink(array(
                'selenium2' => new Session(new Selenium2Driver($parameters['wd_capabilities']['browser'], $parameters['wd_capabilities'], $parameters['wd_host'])),
            ));
            $this->gui = $mink->getSession('selenium2');
        }

        /**
         * @When /^wait (\d+) seconds?$/
         */
        public function waitSeconds($seconds)
        {
            $this->getSession()->wait(1000*$seconds);
        }
    }

Я прочитал много форумов и, честно говоря, сейчас просто запутался ...

Я благодарен за любую помощь!

С уважением, Эммануэль

Обновление 1:

Я попытался запустить свой бэхат с php bin/behat после команды php bin/behat -vvv, я получил сообщение об ошибке:

Emmanuel@Emmanuel-macOS:/Applications/MAMP/htdocs/symfony$ php bin/behat -vvv
Feature: login page
    In order to see login contents
    As a user
    I am able to visit login page

  @javascript @login
  Scenario: dashboard         # features/login.feature:7
    Given I am on '/'         # FeatureContext::iAmOn()
      WebDriver\Exception\SessionNotCreated: Unable to create a new session because of no configuration.
      Build info: version: '3.6.0', revision: '6fbf3ec767', time: '2017-09-27T16:15:40.131Z'
      System info: host: 'Emmanuel-macOS.local', ip: '192.168.178.31', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13', java.version: '1.8.0_72'
      Driver info: driver.version: unknown in vendor/instaclick/php-webdriver/lib/WebDriver/Exception.php:155
      Stack trace:
      #0 vendor/instaclick/php-webdriver/lib/WebDriver/AbstractWebDriver.php(157): WebDriver\Exception::factory(33, 'Unable to creat...')
      #1 vendor/instaclick/php-webdriver/lib/WebDriver/WebDriver.php(70): WebDriver\AbstractWebDriver->curl('POST', '/session', Array, Array)
      #2 vendor/behat/mink-selenium2-driver/src/Selenium2Driver.php(307): WebDriver\WebDriver->session(Array, Array)
      #3 vendor/behat/mink/src/Session.php(70): Behat\Mink\Driver\Selenium2Driver->start()
      #4 vendor/behat/mink/src/Session.php(145): Behat\Mink\Session->start()
      #5 vendor/behat/mink-extension/src/Behat/MinkExtension/Context/RawMinkContext.php(131): Behat\Mink\Session->visit('http://l3ams3/')
      #6 vendor/behat/mink-extension/src/Behat/MinkExtension/Context/MinkContext.php(49): Behat\MinkExtension\Context\RawMinkContext->visitPath('/')
      #7 features/bootstrap/FeatureContext.php(21): Behat\MinkExtension\Context\MinkContext->visit('/')
      #8 [internal function]: FeatureContext->iAmOn('/')
      #9 vendor/behat/behat/src/Behat/Testwork/Call/Handler/RuntimeCallHandler.php(104): call_user_func_array(Array, Array)
      #10 vendor/behat/behat/src/Behat/Testwork/Call/Handler/RuntimeCallHandler.php(60): Behat\Testwork\Call\Handler\RuntimeCallHandler->executeCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #11 vendor/behat/behat/src/Behat/Testwork/Call/CallCenter.php(129): Behat\Testwork\Call\Handler\RuntimeCallHandler->handleCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #12 vendor/behat/behat/src/Behat/Testwork/Call/CallCenter.php(82): Behat\Testwork\Call\CallCenter->handleCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #13 vendor/behat/behat/src/Behat/Behat/Tester/Runtime/RuntimeStepTester.php(125): Behat\Testwork\Call\CallCenter->makeCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #14 vendor/behat/behat/src/Behat/Behat/Tester/Runtime/RuntimeStepTester.php(73): Behat\Behat\Tester\Runtime\RuntimeStepTester->testDefinition(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), Object(Behat\Behat\Definition\SearchResult), false)
      #15 vendor/behat/behat/src/Behat/Behat/Hook/Tester/HookableStepTester.php(74): Behat\Behat\Tester\Runtime\RuntimeStepTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), false)
      #16 vendor/behat/behat/src/Behat/Behat/EventDispatcher/Tester/EventDispatchingStepTester.php(73): Behat\Behat\Hook\Tester\HookableStepTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), false)
      #17 vendor/behat/behat/src/Behat/Behat/Tester/StepContainerTester.php(59): Behat\Behat\EventDispatcher\Tester\EventDispatchingStepTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), false)
      #18 vendor/behat/behat/src/Behat/Behat/Tester/Runtime/RuntimeScenarioTester.php(76): Behat\Behat\Tester\StepContainerTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #19 vendor/behat/behat/src/Behat/Behat/Hook/Tester/HookableScenarioTester.php(74): Behat\Behat\Tester\Runtime\RuntimeScenarioTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #20 vendor/behat/behat/src/Behat/Behat/EventDispatcher/Tester/EventDispatchingScenarioTester.php(103): Behat\Behat\Hook\Tester\HookableScenarioTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #21 vendor/behat/behat/src/Behat/Behat/Tester/Runtime/RuntimeFeatureTester.php(83): Behat\Behat\EventDispatcher\Tester\EventDispatchingScenarioTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #22 vendor/behat/behat/src/Behat/Behat/Hook/Tester/HookableFeatureTester.php(72): Behat\Behat\Tester\Runtime\RuntimeFeatureTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), false)
      #23 vendor/behat/behat/src/Behat/Behat/EventDispatcher/Tester/EventDispatchingFeatureTester.php(71): Behat\Behat\Hook\Tester\HookableFeatureTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), false)
      #24 vendor/behat/behat/src/Behat/Testwork/Tester/Runtime/RuntimeSuiteTester.php(63): Behat\Behat\EventDispatcher\Tester\EventDispatchingFeatureTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), false)
      #25 vendor/behat/behat/src/Behat/Testwork/Hook/Tester/HookableSuiteTester.php(73): Behat\Testwork\Tester\Runtime\RuntimeSuiteTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Testwork\Specification\GroupedSpecificationIterator), false)
      #26 vendor/behat/behat/src/Behat/Testwork/EventDispatcher/Tester/EventDispatchingSuiteTester.php(72): Behat\Testwork\Hook\Tester\HookableSuiteTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Testwork\Specification\GroupedSpecificationIterator), false)
      #27 vendor/behat/behat/src/Behat/Testwork/Tester/Runtime/RuntimeExercise.php(71): Behat\Testwork\EventDispatcher\Tester\EventDispatchingSuiteTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Testwork\Specification\GroupedSpecificationIterator), false)
      #28 vendor/behat/behat/src/Behat/Testwork/EventDispatcher/Tester/EventDispatchingExercise.php(70): Behat\Testwork\Tester\Runtime\RuntimeExercise->test(Array, false)
      #29 vendor/behat/behat/src/Behat/Testwork/Ordering/OrderedExercise.php(80): Behat\Testwork\EventDispatcher\Tester\EventDispatchingExercise->test(Array, false)
      #30 vendor/behat/behat/src/Behat/Testwork/Tester/Cli/ExerciseController.php(146): Behat\Testwork\Ordering\OrderedExercise->test(Array, false)
      #31 vendor/behat/behat/src/Behat/Testwork/Tester/Cli/ExerciseController.php(108): Behat\Testwork\Tester\Cli\ExerciseController->testSpecifications(Object(Symfony\Component\Console\Input\ArgvInput), Array)
      #32 vendor/behat/behat/src/Behat/Testwork/Cli/Command.php(63): Behat\Testwork\Tester\Cli\ExerciseController->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #33 vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php(262): Behat\Testwork\Cli\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #34 vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(888): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #35 vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(224): Symfony\Component\Console\Application->doRunCommand(Object(Behat\Testwork\Cli\Command), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #36 vendor/behat/behat/src/Behat/Testwork/Cli/Application.php(121): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #37 vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(125): Behat\Testwork\Cli\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #38 vendor/behat/behat/bin/behat(32): Symfony\Component\Console\Application->run()
      #39 {main}

      Next Behat\Mink\Exception\DriverException: Could not open connection: Unable to create a new session because of no configuration.
      Build info: version: '3.6.0', revision: '6fbf3ec767', time: '2017-09-27T16:15:40.131Z'
      System info: host: 'Emmanuel-macOS.local', ip: '192.168.178.31', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13', java.version: '1.8.0_72'
      Driver info: driver.version: unknown in vendor/behat/mink-selenium2-driver/src/Selenium2Driver.php:310
      Stack trace:
      #0 vendor/behat/mink/src/Session.php(70): Behat\Mink\Driver\Selenium2Driver->start()
      #1 vendor/behat/mink/src/Session.php(145): Behat\Mink\Session->start()
      #2 vendor/behat/mink-extension/src/Behat/MinkExtension/Context/RawMinkContext.php(131): Behat\Mink\Session->visit('http://l3ams3/')
      #3 vendor/behat/mink-extension/src/Behat/MinkExtension/Context/MinkContext.php(49): Behat\MinkExtension\Context\RawMinkContext->visitPath('/')
      #4 features/bootstrap/FeatureContext.php(21): Behat\MinkExtension\Context\MinkContext->visit('/')
      #5 [internal function]: FeatureContext->iAmOn('/')
      #6 vendor/behat/behat/src/Behat/Testwork/Call/Handler/RuntimeCallHandler.php(104): call_user_func_array(Array, Array)
      #7 vendor/behat/behat/src/Behat/Testwork/Call/Handler/RuntimeCallHandler.php(60): Behat\Testwork\Call\Handler\RuntimeCallHandler->executeCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #8 vendor/behat/behat/src/Behat/Testwork/Call/CallCenter.php(129): Behat\Testwork\Call\Handler\RuntimeCallHandler->handleCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #9 vendor/behat/behat/src/Behat/Testwork/Call/CallCenter.php(82): Behat\Testwork\Call\CallCenter->handleCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #10 vendor/behat/behat/src/Behat/Behat/Tester/Runtime/RuntimeStepTester.php(125): Behat\Testwork\Call\CallCenter->makeCall(Object(Behat\Behat\Definition\Call\DefinitionCall))
      #11 vendor/behat/behat/src/Behat/Behat/Tester/Runtime/RuntimeStepTester.php(73): Behat\Behat\Tester\Runtime\RuntimeStepTester->testDefinition(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), Object(Behat\Behat\Definition\SearchResult), false)
      #12 vendor/behat/behat/src/Behat/Behat/Hook/Tester/HookableStepTester.php(74): Behat\Behat\Tester\Runtime\RuntimeStepTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), false)
      #13 vendor/behat/behat/src/Behat/Behat/EventDispatcher/Tester/EventDispatchingStepTester.php(73): Behat\Behat\Hook\Tester\HookableStepTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), false)
      #14 vendor/behat/behat/src/Behat/Behat/Tester/StepContainerTester.php(59): Behat\Behat\EventDispatcher\Tester\EventDispatchingStepTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\StepNode), false)
      #15 vendor/behat/behat/src/Behat/Behat/Tester/Runtime/RuntimeScenarioTester.php(76): Behat\Behat\Tester\StepContainerTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #16 vendor/behat/behat/src/Behat/Behat/Hook/Tester/HookableScenarioTester.php(74): Behat\Behat\Tester\Runtime\RuntimeScenarioTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #17 vendor/behat/behat/src/Behat/Behat/EventDispatcher/Tester/EventDispatchingScenarioTester.php(103): Behat\Behat\Hook\Tester\HookableScenarioTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #18 vendor/behat/behat/src/Behat/Behat/Tester/Runtime/RuntimeFeatureTester.php(83): Behat\Behat\EventDispatcher\Tester\EventDispatchingScenarioTester->test(Object(Behat\Behat\Context\Environment\InitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), Object(Behat\Gherkin\Node\ScenarioNode), false)
      #19 vendor/behat/behat/src/Behat/Behat/Hook/Tester/HookableFeatureTester.php(72): Behat\Behat\Tester\Runtime\RuntimeFeatureTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), false)
      #20 vendor/behat/behat/src/Behat/Behat/EventDispatcher/Tester/EventDispatchingFeatureTester.php(71): Behat\Behat\Hook\Tester\HookableFeatureTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), false)
      #21 vendor/behat/behat/src/Behat/Testwork/Tester/Runtime/RuntimeSuiteTester.php(63): Behat\Behat\EventDispatcher\Tester\EventDispatchingFeatureTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Gherkin\Node\FeatureNode), false)
      #22 vendor/behat/behat/src/Behat/Testwork/Hook/Tester/HookableSuiteTester.php(73): Behat\Testwork\Tester\Runtime\RuntimeSuiteTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Testwork\Specification\GroupedSpecificationIterator), false)
      #23 vendor/behat/behat/src/Behat/Testwork/EventDispatcher/Tester/EventDispatchingSuiteTester.php(72): Behat\Testwork\Hook\Tester\HookableSuiteTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Testwork\Specification\GroupedSpecificationIterator), false)
      #24 vendor/behat/behat/src/Behat/Testwork/Tester/Runtime/RuntimeExercise.php(71): Behat\Testwork\EventDispatcher\Tester\EventDispatchingSuiteTester->test(Object(Behat\Behat\Context\Environment\UninitializedContextEnvironment), Object(Behat\Testwork\Specification\GroupedSpecificationIterator), false)
      #25 vendor/behat/behat/src/Behat/Testwork/EventDispatcher/Tester/EventDispatchingExercise.php(70): Behat\Testwork\Tester\Runtime\RuntimeExercise->test(Array, false)
      #26 vendor/behat/behat/src/Behat/Testwork/Ordering/OrderedExercise.php(80): Behat\Testwork\EventDispatcher\Tester\EventDispatchingExercise->test(Array, false)
      #27 vendor/behat/behat/src/Behat/Testwork/Tester/Cli/ExerciseController.php(146): Behat\Testwork\Ordering\OrderedExercise->test(Array, false)
      #28 vendor/behat/behat/src/Behat/Testwork/Tester/Cli/ExerciseController.php(108): Behat\Testwork\Tester\Cli\ExerciseController->testSpecifications(Object(Symfony\Component\Console\Input\ArgvInput), Array)
      #29 vendor/behat/behat/src/Behat/Testwork/Cli/Command.php(63): Behat\Testwork\Tester\Cli\ExerciseController->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #30 vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php(262): Behat\Testwork\Cli\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #31 vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(888): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #32 vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(224): Symfony\Component\Console\Application->doRunCommand(Object(Behat\Testwork\Cli\Command), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #33 vendor/behat/behat/src/Behat/Testwork/Cli/Application.php(121): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #34 vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(125): Behat\Testwork\Cli\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
      #35 vendor/behat/behat/bin/behat(32): Symfony\Component\Console\Application->run()
      #36 {main}
    When I press 'einloggen'  # FeatureContext::iPress()
    Then I should see 'Login' # FeatureContext::iShouldSee()

--- Failed scenarios:

    features/login.feature:7

1 scenario (1 failed)
3 steps (1 failed, 2 skipped)
0m0.10s (10.17Mb)

person Emmanuel    schedule 17.10.2017    source источник


Ответы (1)


Мы довольно давно используем Behat с Firefox, и у нас постоянно возникали проблемы, подобные описанным вами. Иногда мы даже понижали версию Firefox, чтобы иметь возможность запускать функции Behat.

Мы перешли на chromedriver, и с тех пор у нас никогда не было проблем (если вы на Mac установите его с помощью brew install chromedriver). Вот наша конфигурация для Behat:

default:
  gherkin:
    filters:
      tags: @mytag
  autoload:
    '': %paths.base%/bootstrap
  extensions:
    Behat\MinkExtension:
      base_url: https://site.local
      goutte:
        guzzle_parameters:
          verify: false
      browser_name: 'chrome'
      selenium2:
        capabilities: { "browserName": "chrome", "browser": "chrome", 'chrome': {'switches':['--no-sandbox']}}

  suites:
    mysuite:
      paths:    [ %paths.base%/features ]
      contexts:
        - FeatureContext
        - GuiContext

Если вы все еще хотите использовать Firefox, чтобы иметь возможность запускать Behat с Selenium, убедитесь, что у вас установлена ​​последняя версия Selenium Standalone Server http://docs.seleniumhq.org/download/.

Также рассмотрите возможность использования образов Docker с Selenium и установленным на нем браузером https://hub.docker.com/u/selenium/, он предварительно настроен и протестирован для работы.

ОБНОВЛЕНИЕ 1

Используйте свой GuiContext без конструктора и расширьте RawMinkContext:

class GuiContext extends RawMinkContext
{
    /**
     * @When /^wait (\d+) seconds?$/
     */
    public function waitSeconds($seconds)
    {
        $this->getSession()->wait(1000*$seconds);
    }
}

Как только вы укажете тег @javascript в своей функции, Behat автоматически переключится на драйвер селена.

ОБНОВЛЕНИЕ 2:

Чтобы запустить селен, выполните команду:

java -jar selenium-server-standalone-3.6.0.jar >& /tmp/selenium.log &

Предположим, что 3.6.0 - это последняя версия селена, загруженная по ссылке. Вы также можете потребовать сервер селена с помощью композитора:

composer require se/selenium-server-standalone

А потом запускаем:

/your-project/vendor/bin/selenium-server-standalone
person zstate    schedule 20.10.2017
comment
Привет, СПАСИБО за отзыв и ответ! Я делаю все, что вы мне сказали, но все равно получаю ту же ошибку. Может быть, мой FeatureContext.php настроен неправильно? Вы можете опубликовать свою конфигурацию? - person Emmanuel; 25.10.2017
comment
@Emmanuel Я только что обновил конфиг и добавил несколько рекомендаций, посмотрите, поможет ли это. - person zstate; 26.10.2017
comment
Я так благодарен за вашу помощь! Знаю, что обнаружил правильный локальный хост, но я все еще получаю сообщение об ошибке, что мое соединение не может быть открыто из-за отсутствия конфигурации. В моем сообщении об ошибке известно "System info: host: 'Emmanuel-macOS.local', ip: ' 172.20.71.92 ',... Я помещаю этот IP-адрес в свой wd_host в свой behat.yml. Ты хоть представляешь, что еще я мог сделать? - person Emmanuel; 26.10.2017
comment
@Emmanuel, как вы запускаете свой селен-сервер? Попробуйте запустить эту команду java -jar selenium-server-standalone-3.6.0.jar >& /tmp/selenium.log &, а затем tail -f /tmp/selenium.log, вы можете получить некоторые сведения из журнала. - person zstate; 26.10.2017
comment
@Emmanuel только что понял, что мы используем концентратор селена. Если вы запустите селен как java -jar selenium-server-standalone-3.6.0.jar, вам не нужно указывать wd_host в behat.yml. Я обновлю свой пост. - person zstate; 26.10.2017
comment
Я начинаю свой селен, как в вашем последнем ответе. вы можете увидеть результат вашего другого сообщения здесь, вы можете объяснить мне, как я могу это сделать это правильно? - person Emmanuel; 26.10.2017
comment
@Emmanuel теперь попробуйте удалить wd_host из behat.yml и запустить снова. - person zstate; 26.10.2017
comment
Я получаю ту же ошибку. Я думаю, что не могу создать сеанс, поэтому мой Chrome не запускается ... есть идея? Я хочу написать некоторые .features и протестировать их, но мой Chrome или Firefox не запускаются и не переходят на мой веб-сайт / веб-приложение ... - person Emmanuel; 26.10.2017
comment
Не могли бы вы опубликовать полную ошибку? Есть что-нибудь в selenium.log? - person zstate; 26.10.2017
comment
Где я могу найти журнал selenium.log? - person Emmanuel; 26.10.2017
comment
@Emmanuel Я имел в виду /tmp/selenium.log. tail -f /tmp/selenium.log после запуска селена. - person zstate; 26.10.2017
comment
Ваша версия selenium 2.31 немного устарела, самая новая - 3.6, загрузите ее с docs.seleniumhq.org/download, где написано Selenium Standalone Server. - person zstate; 26.10.2017
comment
Я снова загрузил автономный сервер 3.6.0 с веб-сайта, но в журнале все еще 2.31. - person Emmanuel; 26.10.2017
comment
@Emmanuel Если вы запустите команду behat с флагом -vvv, она даст вам больше результатов. Пожалуйста, опубликуйте команду behat, которую вы пытаетесь запустить, и полную ошибку, которую вы получаете от команды. - person zstate; 26.10.2017
comment
Я обновил свой пост. Хотите продолжить обсуждение в чате? - person Emmanuel; 26.10.2017
comment
@Emmanuel Да, мы можем обсудить в чате. То есть пока я пробую этот скелет, я просто настраиваю github.com/zstate/behat-selenium-skeleton, посмотрите, появится ли у вас такая же ошибка. - person zstate; 26.10.2017
comment
Привет, большое спасибо за загрузку. Я сделал, как вы написали, но теперь у меня другая ошибка: [Behat\Behat\Context\Exception\ContextNotFoundException] 'MyProject\Context\FeatureContext' context class not found and can not be used. - person Emmanuel; 26.10.2017
comment
@Emmanuel composer install должен помочь. behat использует автозагрузчик поставщика, а пространство имен определяется в composer.json. - person zstate; 26.10.2017
comment
@Emmanuel не уверен, почему у вас эта ошибка, у нас, вероятно, есть некоторые различия в среде. Я тестировал это репо. - person zstate; 27.10.2017
comment
эй, без проблем. Я благодарен, что вы пытались мне помочь :) Большое спасибо. - person Emmanuel; 27.10.2017