如何阻止codeception/selenium关闭失败断言的浏览器窗口?

如何阻止codeception/selenium关闭失败断言的浏览器窗口?,selenium,codeception,Selenium,Codeception,我正在用selenium运行codeception 2。我可以看到selenium打开浏览器并运行测试。然后我从codeception得到一个错误,即存在一个失败的断言 我知道保存了一个HTML文件,但是有很多JS,所以我不能真正分析它。我需要firefox窗口保持打开状态,以便查看输出并找出问题所在 我该怎么做?我已经在使用-browserSessionReuse运行selenium了 如果它起作用,那么它发生在$I->haveFriend()中$friend->does()语句。没有直接的解

我正在用selenium运行codeception 2。我可以看到selenium打开浏览器并运行测试。然后我从codeception得到一个错误,即存在一个失败的断言

我知道保存了一个HTML文件,但是有很多JS,所以我不能真正分析它。我需要firefox窗口保持打开状态,以便查看输出并找出问题所在

我该怎么做?我已经在使用-browserSessionReuse运行selenium了


如果它起作用,那么它发生在$I->haveFriend()中$friend->does()语句。

没有直接的解决方案,但可以使用一些技巧:

  • 使用交互式控制台,遵循场景中相同的步骤,使用失败的断言—selenium保持打开状态,以便您可以调试和评估发生的情况
  • 使用等待的技巧。在cest文件中添加“失败”方法,其中放置“等待(300)”(5分钟)。而在测试启动时,您的浏览器将保持打开状态5分钟

  • 如果您正在运行Cest样式的测试,请尝试

    public function _failed(AcceptanceTester $I)
    {
         $I->pauseExecution();
    }
    
    这将保持浏览器窗口打开,直到出现故障时按enter键

    或者,您可以在测试失败时截图

    public function _failed(AcceptanceTester $I)
        {
            $I->makeScreenshot('test_failed_screenshot' . time());
        }
    

    这将在测试>输出>调试中保存故障点的屏幕截图。我的CEST中有几个测试,因此我使用time()对失败的屏幕截图名称进行更改,以确保每个失败的测试都有一个屏幕截图。

    我发现$I->pauseExection()不起作用(它不会暂停/等待Enter)。从文档中可以看出,如果系统处于调试模式,它将暂停-如何将其置于调试模式?您是否尝试过使用调试标志运行测试?codecept run--debug{testname}尝试将
    restart:false
    添加到.yml文件中。