1

我是 Selenium 的新手,当 Assert equals 失败时,我被 Selenium 截屏所困。我正在使用TestNG。

当测试用例在服务器端失败时,它需要对页面进行截图,以便我可以准确地知道哪里出错了。

我将代码包装在 try catch 块中,在 catch 中,我正在截屏。

当 O 看到 selenium 问题时,屏幕截图功能正在工作,例如元素不可见、无法单击元素。

但这对于 Assert.equals() 来说是失败的。当 Assert.assertEquals() 失败时,我希望它会捕获并截取屏幕截图。任何人都可以澄清我的疑问吗?

下面是代码片段,我如何尝试实现这一点:

try {


Assert.assertEquals(expected,actualoutput,message) //it fails

}

catch {
Selenium taking screenshot  // iam not able to take screenshot
}
4

3 回答 3

0

您可能正在捕获异常,而 Assert 在失败时会引发错误。

但是,我认为 testng 为您提供了其他钩子,您可以在其中分享在测试中对失败进行截图的逻辑。

实现此目的的一种方法是将截屏代码放入 ITestListener 接口提供的 onTestFailure 中。通过这种方式,您可以避免将所有验证放在 try-catch 块中。

最近,TestNG 还增加了一些执行断言的灵活性。您也可以尝试探索它。

于 2012-11-08T05:54:38.267 回答
0

虽然评论是真实的,但我为您提供解决方法 - 更改Assertif

if (!message.equals(expected)){
   takeScreenshot(outputfile.jpg);
}
于 2012-11-07T09:35:49.773 回答
0

如果失败,我建议使用@AfterMethod调用@Override方法来缩短屏幕的注释Result

@AfterMethod
        public void onTestFailure(ITestResult testResult) throws IOException {
          if(testResult.getStatus() == ITestResult.FAILURE){
              System.out.println(testResult.getStatus());
            }

@Override
public void onTestFailure(ITestResult result) {
        System.out.println("***** Error " + result.getName() 
                                         + " test has failed *****");

        <Code and Logic>
  }
于 2015-12-07T06:10:33.647 回答