我正在使用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);