在我的symfony2项目中,我希望能够使用Mink测试和Selenium2一起从我的服务中运行特定的scenarious,而无需编写behat scenarious。
一些抽象的例子,我是怎么想象的:
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测试都在某些浏览器中运行,比如在为Behat场景指定@javascript标记时就会运行behat。
有什么办法吗?
发布于 2015-10-26 15:41:54
我找到解决办法了!
所以我查了Mink的文档,找到了这。应该使用特定浏览器作为类参数创建Selenium2Driver:
$driver = new \Behat\Mink\Driver\Selenium2Driver('firefox');之后,您需要使用此驱动程序创建Mink会话:
$this->session = new Session($driver);
$this->session->start();并且您可以运行Mink scenarious从这个会话:
$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;
}祝好运!
https://stackoverflow.com/questions/33347773
复制相似问题