在我的symfony2项目中,我希望能够使用Selenium2中的Mink测试从我的服务中运行特定的风格,而不需要编写风格。
一些抽象的例子我怎么想这个:
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驱动程序连接起来,然后当您为behat场景指定 @javascript 标记时,我的所有Mink测试都会在某些浏览器中运行,例如Behat。
任何想法如何做到这一点?
答案 0 :(得分:0)
我找到了解决方案!
所以我查看了Mink的文档并找到了this。您应该使用特定浏览器创建Selenium2Driver作为类参数:
$this->session = new Session($driver);
$this->session->start();
之后,您需要使用此驱动程序创建一个Mink会话:
$this->session->visit('http://stfalcon.com');
$this->session->getPage()->clickLink('EN');
并且你可以从这次会议中运行Mink scenarious:
/**
* 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;
}
如果要创建Behat FeatureContext中的自定义方案,可以这样做:
void run(uint16_t port) {
m_server.listen(websocketpp::lib::asio::ip::tcp::v4(), port);
m_server.start_accept();
m_server.run();
}
祝你好运!