默认情况下,我使用goutte运行测试。如何为一步设置不同的驱动程序?例如,在失败的步骤后截取屏幕截图我需要selenium驱动程序。而且我不知道哪一步会失败。
答案 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。您始终可以在浏览器中显示它。