簡體   English   中英

Selenium WebDriver中發生異常時該怎么辦?

[英]What to do when an exception occurs in Selenium WebDriver?

我知道這個問題現在肯定已經被問過很多遍了,但是我找不到我想要的東西。 也許有人可以在這里幫助我。

當硒測試由於超時,找不到元素,不可見等原因而遇到異常時,我們應該如何處理。 我知道我們不應該明確地使它失敗。 我們應該跳過該測試還是應該以其他方式處理它?

好吧,遇到異常有多種原因。 這完全取決於您的代碼。 通常情況下,它會自行指出某些線路,您可以確定問題出在哪里。 正如您提到的找不到元素-為此,您的頁面可能無法正確加載,並且您的selenium命令試圖找出頁面上的元素,因此遇到異常。 超時-很多時候,您是selenium命令,等待執行操作,但是定位器無法找到該元素,並且在定義的時間之后,它顯示為超時異常。

您能詳細說明您在哪種情況下遇到哪種異常,這將有助於獲得准確的答案。

我認為,當其中一項測試中發生異常時,我們應該以最佳方式記錄該異常。 這意味着添加完整的堆棧跟蹤,時間,當前URL,屏幕截圖以及可能的測試視頻。

在我的團隊中,我們使用每個測試類或測試的屬性來標記測試是否應該創建圖片或在失敗時保存視頻。 當然,這些不是Web驅動程序中的內置功能。

您可以檢查我的記錄儀解決方案以了解我們的自動化及其與Jenkins的集成-http : //automatetheplanet.com/output-mstest-tests-logs-jenkins-console-log/

我們正在使用的另一種方法-標記失敗的測試並重試。 如果它們再次失敗-這意味着幾乎肯定會發生新的錯誤。

  1. 記錄您的異常,可以使用適當的記錄器工具完成,

    log4j2已變得像Java中的標准。 http://logging.apache.org/log4j/2.x/

    如果您使用的是好的記錄器,它將在log4j2中打印所需的詳細信息以及異常詳細信息,您可以使用以下命令將stacktrace打印到日志中

      try{ ... } catch(Exception e){ logger.catching(e); } 
  2. 要明確地通過測試還是不通過測試將取決於。
    大多數情況下,如果在每個測試用例的末尾進行了特定的驗證,將會非常小心。 但是如果不記錄每個異常,將很難確定故障的根本原因。 您無法處理每個異常,並且某些異常可以忽略,因此建議不要在每個異常捕獲上進行明確的失敗測試。

Mohit ...這是對您的評論的回應... “讓我們以Selenium中未發現異常的元素為例。在基於Page Object模式的框架中,我在測試文件中添加try catch語句,這稱為Page Object中的方法(Page Object中的方法正在與Web元素交互,並且在交互時找不到此Web元素)。如何在我的Test文件中處理此問題?我想提及類的名稱(在在Test方法中捕獲異常后發生哪個異常(在這種情況下為Page Object)

通過從測試中調用方法,如果您試圖在頁面中查找和操作元素,請在頁面中進行處理。

您可以在操作后使用斷言來驗證實際結果。

您可以在測試調用期間在頁面中發生異常后記錄該異常,它將捕獲所有詳細信息。

例如:LoginPage

public FlightFinderPage doLogin(String uname, String pwd){
          try{
                username.sendKeys(uname);
                password.sendKeys(pwd);
                login.submit();         
            }catch(Exception e){
                TestUtil.takeScreenShot("LoginElement");
                APP_LOGS.warn("Element not found",e);           
            }   
                return PageFactory.initElements(driver, FlightFinderPage.class);    
}

登錄測試

FlightFinderPage ffPage = lp.doLogin("test", "test");
Assert.assertEquals(ffPage.getTitleFFPage(),"Find a Flight: Mercury Tours:");

我同意有很多方法可以做到這一點。 這是我的個人看法...歡迎任何評論...

暫無
暫無

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

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