如何在中间停止Behat测试以运行元素检查器?



我正在使用Chrome驱动程序,目前正在进行测试时暂停浏览器:

And I ...
And I wait for 3600 seconds
And I ...

给定以下方法:

/**
* @Given I wait for :number seconds
*/
public function iWaitForSeconds($number) {
$this->getSession()->wait($number * 1000);
}

所以我可以自由地使用DevTools在我的测试中的特定位置检查给定页面的对象。

问题是打开DevTools时,脚本停止并显示错误:

And I wait for 3600 seconds # CWTestContextHelperContext::iWaitForSeconds()
disconnected: not connected to DevTools
(Session info: chrome=59.0.3071.115)
(Driver info: chromedriver=2.31.488774,platform=Mac OS X 10.12.0 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 605 milliseconds
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Session ID: d429c9a3fdac50fcaed852d9f094d535 (WebDriverExceptionUnknownError)

有没有更好的方法可以做到这一点?

可以使用如下断点:

/**
* adds a breakpoints
* stops the execution until you hit enter in the console
* @Then /^breakpoint/
*/
public function breakpoint()
{
fwrite(STDOUT, "33[s    33[93m[Breakpoint] Press 33[1;93m[RETURN]33[0;93m to continue...33[0m");
while (fgets(STDIN, 1024) == '') {}
fwrite(STDOUT, "33[u");
return;
}

你也可以像ClassName::breakpoint();一样声明它静态并调用它

或者,您可以在 IDE 中启用调试。

使用 Behat 逐步扩展,这是一个模块,可让您轻松逐步执行某个功能,而无需为其添加特定代码。 这是 GitHub 概述:

调试特定方案时,请使用 CLI 中的--step-through标志:

bin/behat --step-through features/my-failing-feature

完成每个步骤后,您将看到消息

[Paused after "<step text>" - press enter to continue]

Behat 测试套件将保持此挂起状态,直到收到回车,以便您进行任何必要的检查。

我们可以为此使用 sleep 命令。

sleep(500);

相关内容

  • 没有找到相关文章

最新更新