Запустите Mink с Selenium2 с php


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

Какой-нибудь абстрактный пример того, как я это себе представляю:

class MyService extends MinkContext
{
    /**
     * @var Mink $mink Mink
     */
    private $mink;

    /**
     * Set up
     */
    public function setUp()
    {
        $this->mink = new Mink();
        $this->mink->setUp($this->createSeleniumDriver());
    }

    /**
     * Run scenario
     */
    public function runScenario()
    {
        $this->visit('http://google.com.com');
        $this->pressButton('Google Search');
    }
}

Поэтому я хочу, чтобы у меня была возможность подключить Mink с драйвером Selenium, а затем все мои тесты на норку запускались в каком-нибудь браузере, как в does Behat, когда вы указываете @javascript тег для сценария behat.

Есть идеи, как это сделать?

Author: Logans, 2015-10-26

1 answers

Я нашел решение!

Поэтому я проверил документацию Норки и нашел это. Вы должны создать Selenium2Driver, используя определенный браузер в качестве параметра класса:

$driver = new \Behat\Mink\Driver\Selenium2Driver('firefox');

После этого вам нужно создать сеанс норки с помощью этого драйвера:

$this->session = new Session($driver);
$this->session->start();

И и вы можете запустить сценарий норки из этого сеанса:

$this->session->visit('http://stfalcon.com');
$this->session->getPage()->clickLink('EN');

Если вы хотите создать собственный сценарий, как в FeatureContext, вы можете сделать это следующим образом:

/**
 * Clink on element with css
 *
 * @param string $element Element pattern
 *
 * @throws ElementNotFoundException
 */
public function iClickOn($element)
{
    $element = $this->fixStepArgument($element);

    $selectedElement = $this->getSession()->getPage()->find('css', $element);

    if (!$selectedElement) {
        throw new \InvalidArgumentException(sprintf('Cannot find element with selector: "%s"', $element));
    }

    $selectedElement->click();
}

/**
 * Returns fixed step argument (with \\" replaced back to ").
 *
 * @param string $argument
 *
 * @return string
 */
protected function fixStepArgument($argument)
{
    return str_replace('\\"', '"', $argument);
}

/**
 * Get session
 *
 * @return Session Session
 */
public function getSession()
{
    return $this->session;
}

Удачи!

 0
Author: Logans, 2015-10-26 15:41:54