运行 来自 php 的 Selenium2 Mink
Run Mink with Selenium2 from php
在我的 symfony2 项目中,我希望能够 运行 使用 Mink 测试和 Selenium2 从我的服务中获取特定场景,而无需编写 behat 场景。
一些抽象的例子我是怎么想的:
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 驱动程序连接起来,然后我的所有 Mink 测试 运行 在某些浏览器中进行,就像当您指定 @javascript[ 时 Behat 一样=22=] behat 场景的标签。
知道怎么做吗?
我找到了解决方案!
所以我查看了 Mink 的文档并找到了 this。您应该使用特定浏览器创建 Selenium2Driver 作为 class 参数:
$driver = new \Behat\Mink\Driver\Selenium2Driver('firefox');
之后您需要使用此驱动程序创建 Mink session:
$this->session = new Session($driver);
$this->session->start();
而且你可以 运行 从这个 session:
$this->session->visit('http://stfalcon.com');
$this->session->getPage()->clickLink('EN');
如果您想像在 Behat 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;
}
祝你好运!
在我的 symfony2 项目中,我希望能够 运行 使用 Mink 测试和 Selenium2 从我的服务中获取特定场景,而无需编写 behat 场景。
一些抽象的例子我是怎么想的:
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 驱动程序连接起来,然后我的所有 Mink 测试 运行 在某些浏览器中进行,就像当您指定 @javascript[ 时 Behat 一样=22=] behat 场景的标签。
知道怎么做吗?
我找到了解决方案!
所以我查看了 Mink 的文档并找到了 this。您应该使用特定浏览器创建 Selenium2Driver 作为 class 参数:
$driver = new \Behat\Mink\Driver\Selenium2Driver('firefox');
之后您需要使用此驱动程序创建 Mink session:
$this->session = new Session($driver);
$this->session->start();
而且你可以 运行 从这个 session:
$this->session->visit('http://stfalcon.com');
$this->session->getPage()->clickLink('EN');
如果您想像在 Behat 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;
}
祝你好运!