如何在behat中设置一个步骤的不同驱动程序?

时间:2015-10-22 10:14:38

标签: selenium behat goutte

默认情况下,我使用goutte运行测试。如何为一步设置不同的驱动程序?例如,在失败的步骤后截取屏幕截图我需要selenium驱动程序。而且我不知道哪一步会失败。

1 个答案:

答案 0 :(得分:0)

查看Mink docs,特别是managing sessions chapter,了解如何更改默认驱动程序。如果您不熟悉Behat钩子,那么赶上Hooking into the Test Process文档也是一件好事。

以下是如何访问mink并更改默认会话的示例。执行此方法后,将通过所选驱动程序执行会话对象上的所有以下操作。

use Behat\Behat\Hook\Scope\BeforeStepScope;
use Behat\Behat\Hook\Scope\AfterStepScope;

class MyContext extends RawMinkContext
{
    /**
     * @BeforeStep
     */
    public function before(BeforeStepScope $scope)
    {
        // note that this will be called before EVERY step
        // add logic here if you want to perform it before SOME steps
        // You can't really know if your step will fail though ;)
        $mink = $this->getMink();
        $mink->setDefaultSessionName('selenium');
    }

    public function after(AfterStepScope $scope)
    {
        // here you can inspect $scope to see if your step failed
    }
}

这不是一个完整的解决方案,但如果您真的想要追求它,应该指出正确的方向。

然而,我强烈反对你这样做

如果你的步骤失败,它已经被执行了。要制作屏幕截图,您需要使用其他驱动程序再次执行该步骤。此时应用程序的状态很可能不同。你还需要与驱动程序之间的差异进行斗争,尝试共享cookie等等。这是不值得的。

相反,只需转储一个HTML。您始终可以在浏览器中显示它。