【问题标题】:How can i stop codeception/selenium from closing the browser window on failed assertions?如何阻止 codeception/selenium 在断言失败时关闭浏览器窗口?
【发布时间】:2016-03-04 16:36:04
【问题描述】:

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

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

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

如果它有所作为,它发生在 $I->haveFriend(); $friend->does() 语句。

【问题讨论】:

  • 尝试将restart: false 添加到 .yml 文件中。

标签: selenium codeception


【解决方案1】:

没有直接的解决方案如何做到这一点,但可以使用一些技巧:

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

【讨论】:

    【解决方案2】:

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

    public function _failed(AcceptanceTester $I)
    {
         $I->pauseExecution();
    }
    

    这将使浏览器窗口保持打开状态,直到您按 Enter 键以防出现故障。

    或者,您可以在测试失败时截取屏幕截图。

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

    这将在测试 > 输出 > 调试中保存故障点的屏幕截图。我的 cests 中有几个测试,所以我使用 time() 来为失败的屏幕截图名称提供变化,以确保我为每个失败的测试都有一个屏幕截图。

    【讨论】:

    • 我发现 $I->pauseExection() 不起作用(它不会暂停/等待 Enter )。来自文档codeception.com/docs/modules/WebDriver#pauseExecution 它说如果系统处于调试模式它将暂停 - 如何将其置于调试模式?
    • 您是否尝试过使用调试标志运行测试? codecept run --debug {testname}
    猜你喜欢
    • 2020-06-06
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 2017-11-22
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多