簡體   English   中英

Selenium可以對測試(Assert.assertEquals())失敗進行截圖嗎?

[英]Can Selenium take a screenshot on test(Assert.assertEquals()) failure?

我是Selenium的新手,當Assert equals失敗時,我會抓緊Selenium截屏。 我正在使用TestNG。

當測試用例在服務器端失敗時,它需要截取頁面的屏幕截圖,以便我可以准確知道它出了什么問題。

我將代碼包裝在try catch塊中,並在catch中截屏。

當O看到硒問題(例如,元素不可見,無法單擊元素)時,屏幕截圖功能將起作用。

但這對於Assert.equals()失敗。 當Assert.assertEquals()失敗時,我希望它能夠捕獲並截屏。 誰能澄清我的疑問?

下面是代碼片段,我如何實現這一點:

try {


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

}

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

雖然評論是正確的,但我為您提供了解決方法-將Assert更改為if

if (!message.equals(expected)){
   takeScreenshot(outputfile.jpg);
}

您可能正在捕獲異常,而斷言失敗則拋出錯誤。

但是,我認為testng還為您提供了其他幫助,您可以在其中共享在測試中針對失敗進行屏幕截圖的邏輯。

實現此目的的一種方法是將屏幕截圖獲取代碼放入ITestListener接口提供的onTestFailure中。 這樣,您可以避免將所有驗證都放入try-catch塊中。

最近,TestNG 在執行斷言時也增加了一些靈活性 您也可以嘗試探索。

我建議使用注釋@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>
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM