【问题标题】:Create screenshot after failed selenium command在 selenium 命令失败后创建屏幕截图
【发布时间】:2014-07-06 19:41:58
【问题描述】:

PHPUnit Selenium 基类可以选择在失败时进行屏幕截图,这对于找出测试失败的原因非常有帮助。然而,selenium 服务器会在任何错误条件下返回错误而不是失败,而不是显式调用 assert*(比如我们试图用不存在的元素做某事)。如果我在服务器报告错误后尝试截屏,我会收到另一个错误,说服务器已经丢弃了会话。有什么办法可以改变这种行为吗?

更新:这是因为 PHPUnit 在收到错误时会中断连接。我能够通过对 PHPUnit 代码的一些(相当丑陋的)操作来改变它。

【问题讨论】:

    标签: selenium phpunit


    【解决方案1】:

    将这些交互作为测试用例。

    例如在 perl 中, 如果它写如下并且由于不存在的元素而失败。该脚本将错误退出

    $sel->type("email-id","trial\@trial.com");
    

    如果将上述步骤作为测试用例编写如下

    $sel->type_ok("email-id","trial\@trial.com");
    

    如果有不存在的元素,测试用例只会失败,脚本会继续。

    所以使用TAP(测试任何协议)通过使用模块use Test::More;,如果在函数后添加_ok,函数返回将用于确定测试用例的命运。

    即。 - 返回“O”表示测试失败

    返回“1”表示测试通过

    【讨论】:

    • <cmd>_ok 只是 Test::Www::Selenium 中的一个包装器,它将调用 <cmd> 然后以某种方式处理返回值。这无济于事;一旦调用<cmd>,selenium 服务器就会丢弃会话,我无法获取屏幕截图。
    • 罢工;似乎 PHPUnit 是放弃会话的人。
    【解决方案2】:

    不是 Selenium 服务器,而是 PHPUnit 3.4 的 SeleniumTestCase 类在检测到错误时自动发送停止命令(Driver.php 第 921 行)。 PHPUnit 3.6 似乎更好地处理错误。

    【讨论】:

      【解决方案3】:

      我认为您可以覆盖方法“travelbox”并制作如下内容:

      public function onNotSuccessfulTest(Exception $e){
             file_put_content('/xxx/xxx.jpg', $this->currentScreenshot());
       }
      

      【讨论】:

        猜你喜欢
        • 2013-11-14
        • 1970-01-01
        • 1970-01-01
        • 2019-02-08
        • 1970-01-01
        • 1970-01-01
        • 2012-09-07
        • 2012-12-20
        • 1970-01-01
        相关资源
        最近更新 更多