在selenium命令失败后创建屏幕截图

时间:2011-10-24 12:58:03

标签: selenium phpunit

PHPUnit Selenium基类可以选择在失败时制作屏幕截图,这有助于找出测试失败的原因。但是,selenium服务器在显式assert*调用之外的任何错误条件下返回错误而不是失败(这样我们尝试对不存在的元素执行某些操作)。如果我在服务器报告错误后尝试制作屏幕截图,我会收到另一个错误,说服务器已经放弃了会话。有没有办法改变这种行为?

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

3 个答案:

答案 0 :(得分:1)

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

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

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

如果将上述步骤作为测试用例,则按如下方式编写

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

如果存在不存在的元素,则测试用例仅 失败 ,脚本将继续。

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

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

并且返回“1”表示测试通过

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我认为你可以覆盖方法'travelbox'并做出类似这样的事情:

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