首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Selenium2从php运行Mink

使用Selenium2从php运行Mink
EN

Stack Overflow用户
提问于 2015-10-26 14:06:38
回答 1查看 343关注 0票数 2

在我的symfony2项目中,我希望能够使用Mink测试和Selenium2一起从我的服务中运行特定的scenarious,而无需编写behat scenarious。

一些抽象的例子,我是怎么想象的:

代码语言:javascript
复制
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。

有什么办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-26 15:41:54

我找到解决办法了!

所以我查了Mink的文档,找到了。应该使用特定浏览器作为类参数创建Selenium2Driver:

代码语言:javascript
复制
$driver = new \Behat\Mink\Driver\Selenium2Driver('firefox');

之后,您需要使用此驱动程序创建Mink会话:

代码语言:javascript
复制
$this->session = new Session($driver);
$this->session->start();

并且您可以运行Mink scenarious从这个会话:

代码语言:javascript
复制
$this->session->visit('http://stfalcon.com');
$this->session->getPage()->clickLink('EN');

如果您想要创建像Behat FeatureContext这样的自定义场景,您可以这样做:

代码语言:javascript
复制
/**
 * 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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33347773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档