2011-10-24 37 views
3

PHPUnit Selenium基类可以选择在失败时进行截图,这对于找出测试失败的原因有很大的帮助。然而,selenium服务器在显式调用assert*(比如我们试图用一个不存在的元素做某事)之外的任何错误情况下都会返回错误而不是错误。如果我在服务器报告错误后尝试制作屏幕截图,则会收到另一个错误消息,指出服务器已经丢弃了该会话。有什么方法可以改变这种行为吗?在失败的selenium命令后创建屏幕截图

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

回答

1

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

1

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

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

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

虽然如果上述步骤是通过如下

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

写它如果存在不存在的单元,测试由作为测试用例案件将只有失败,脚本将继续。

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

即。 - “O”的返回装置测试失败

和“1”的返回装置,所述测试传递

+0

' _ok'只是在测试一个包装::万维网::硒,它将调用''再处理某种程度上返回值。这没有帮助;只要调用'',硒服务器就会丢弃会话,并且我无法获取屏幕截图。 – Tgr

+0

罢工;看起来PHPUnit是一个丢掉会话的人。 – Tgr

0

我想你可以覆盖方法“travelbox”,让这样的事情:

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