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

selenium命令失败后创建屏幕截图,selenium,phpunit,Selenium,Phpunit,PHPUnit Selenium基类可以选择在失败时制作屏幕截图,这对找出测试失败的原因有很大帮助。但是,selenium服务器在除显式assert*调用以外的任何错误条件下(例如我们试图对不存在的元素执行某些操作)都会返回错误而不是失败。如果我试图在服务器报告错误后制作一个屏幕截图,我会收到另一个错误,表明服务器已经放弃了会话。有没有办法改变这种行为 更新:这是因为PHPUnit在收到错误时会中断连接。我能够通过对PHPUnit代码的一些(相当丑陋的)操作来改变它。将这些交互作为测试用例 例如

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


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

将这些交互作为测试用例

例如,在perl中, 如果按照以下方式编写,并且由于不存在元素而失败。脚本将出错退出

$sel->type("email-id","trial\@trial.com");
而如果上面的步骤是作为一个测试用例来编写的,则如下所示

$sel->type_ok("email-id","trial\@trial.com");
如果有一个不存在的元素,测试用例只会失败,脚本将继续

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

ie.-返回“O”表示测试失败


返回“1”表示测试通过,它不是Selenium服务器,而是PHPUnit 3.4的SeleniumTestCase类,当检测到错误时自动发送停止命令(Driver.php行921)。PHPUnit 3.6似乎可以更好地处理错误。

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

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

\u ok
只是Test::Www::Selenium中的一个包装器,它将调用
,然后以某种方式处理返回值。这没有帮助;只要调用
,selenium服务器就会中断会话,我无法获得屏幕截图;似乎是PHPUnit放弃了会话。