PHPUnit Selenium基类可以选择在失败时制作屏幕截图,这有助于找出测试失败的原因。但是,selenium服务器在显式assert*
调用之外的任何错误条件下返回错误而不是失败(这样我们尝试对不存在的元素执行某些操作)。如果我在服务器报告错误后尝试制作屏幕截图,我会收到另一个错误,说服务器已经放弃了会话。有没有办法改变这种行为?
更新:这是因为PHPUnit在收到错误时会中断连接。我能够通过PHPUnit代码的一些(相当难看的)操作来改变它。
答案 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());
}