日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

49自动化测试中最常见的硒异常

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 49自动化测试中最常见的硒异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發人員將始終在編寫代碼時牢記不同的場景,但是在某些情況下,實現可能無法按預期工作。 相同的原則也適用于測試代碼,該代碼主要用于測試現有產品的功能,發現錯誤以及使產品100%不受錯誤影響。

正確地說,真理總是比小說更陌生,當您執行Selenium測試自動化時,您會目睹很多“陌生的事物”。 在執行測試代碼時遇到的這些事情或場景可能不是很常見,但是測試實現應該足夠健壯以應對此類場景。 這些場景被恰當地稱為例外,在使用Selenium進行自動瀏覽器測試時,您會遇到許多此類例外。

Selenium異常被廣泛用于處理錯誤情況并避免Web應用程序故障。 盡管在所有Selenium WebDriver代碼中都可能發生許多Selenium異常,但是某些Selenium異常特定于框架支持的編程語言,例如Java,C#,Python等。此博客介紹了常見的Selenium異常以及特定于語言的異常,一個詳盡的列表,在代碼中遇到異常時可能會有所幫助。

在本博客的最后,您將獲得有關執行自動瀏覽器測試相關方案時經常使用的Selenium異常的完整介紹。

硒異常簡介

異常(也稱為故障)是在程序執行過程中發生的前所未有的事件。 發生異常時,正常程序的執行將停止,并執行相應的異常處理程序。 如果沒有異常處理程序來處理該特定異常,則程序將返回引發異常的調用函數,最終導致程序終止。

由于Selenium測試自動化是在不同的目標平臺,設備和Web瀏覽器上執行的; 測試代碼的行為可能會因瀏覽器類型或瀏覽器版本而異。 例如,某些屬性可能是特定于瀏覽器的,并且如果在執行自動瀏覽器測試的瀏覽器中不存在特定屬性,則會拋出異常。 通用屬性名稱也可以是特定于瀏覽器的,如果目標瀏覽器上沒有相同的屬性,則可能導致Selenium異常,例如NoSuchAttributeException。

正確處理異常是一個好習慣,因為未處理的異常會導致程序失敗,從而最終影響產品體驗。 異常對象包含有關異常類型,調用堆棧的信息以及其他有用的信息,這些信息將有助于調試并使代碼更加安全。

硒自動化的11種最佳單元測試框架

硒異常類別

Selenium異常分為兩大類-已檢查的異常和未檢查的異常。 根據捕獲異常的時間(即編譯時間或運行時)對這些異常進行分類。

A.檢查異常

Selenium測試自動化中的已檢查異常是在測試代碼實現過程中處理的,例如NoSuchAttributeException等。已檢查異常的處理發生在編譯時本身。

如果某些方法引發了檢查的異常,則最好定義一個處理該特定異常的處理程序。

B.未檢查的異常

Selenium測試自動化中未檢查的異常會在運行時發生,并且比已檢查的異常有更嚴重的影響。 例如ElementNotVisibleException,MoveTargetOutOfBoundsException等。

Java中的異常可以選中或取消選中,而C ++中的所有異常都選中。 在自動瀏覽器測試相關方案中,經常會遇到未經檢查的異常,因為這些測試涉及Web瀏覽器和操作系統的不同組合和版本。

另請閱讀: 使用Selenium WebDriver測試自動化的22條實用技巧

硒例外備忘單

在本地或遠程Selenium網格上執行自動瀏覽器測試時,您會遇到不同類型的異常。 一些Selenium異常特定于用于編寫Selenium測試自動化方案的編程語言。

常見的硒異常

以下是所有Selenium WebDriver代碼中可能發生的一些常見Selenium異常。

  • ElementClickInterceptedException
  • 無法正確執行Element Click命令,因為以某種方式隱藏了接收Click命令的元素。

  • ElementNotInteractableException
  • 即使目標Web元素存在于DOM上,但與該元素的交互將擊中另一個Web元素時,也會引發此'ElementNotInteractableException'Selenium異常。

  • ElementNotSelectableException
  • 當目標元素存在于DOM上但由于無法選擇而無法與之交互時,就會發生此Selenium異常。 例如,與腳本元素進行交互時將拋出此異常。

  • ElementNotVisibleException
  • Selenium異常的最常見類型,即使存在web元素但不可見,也將引發該異常。 由于該元素不可見,因此無法與該元素進行任何交互。

    在Selenium測試自動化中通常會遇到這種情況,其中嘗試對Web元素(例如按鈕,標簽等)進行相關操作(單擊,閱讀等),但是該元素從視圖中隱藏了。 另一個示例是HTML中定義的具有隱藏類型的元素。

  • ErrorInResponseException
  • 當服務器端發生某些問題或錯誤時,將拋出此Selenium異常。 如果用戶名和訪問密鑰的錯誤組合用于訪問基于云的遠程Selenium Grid,與遠程Web驅動程序服務器進行通信或與Firefox擴展(或Chrome附加組件)進行通信,則可能會發生這種情況。
    服務器端錯誤的一些常見響應代碼是:

    • 401 –未經授權
    • 400 – BadRequest
    • 500內部服務器錯誤
    • 409 –沖突
    • 403 –禁止
    • 405 – MethodNotAllowed
  • 如果IME(輸入法引擎)的激活由于某種原因失敗,則拋出此異常。
    解決此問題的理想方法是檢查計算機上是否有IME支持。

  • ImeNotAvailableException
  • 如果IME(輸入法引擎)不可用,則拋出此Selenium異常。 如果在測試計算機上沒有IME支持,則會為每個與IME相關的方法引發ImeNotAvailableException。

  • InsecureCertificateException
  • 過期或無效的TLS證書的使用導致用戶代理引發證書警告。

  • NoSuchFrameException
  • 當要切換到的幀不存在時,將引發NoSuchFrameException Selenium異常。

    為避免此類Selenium異常,建議在自動瀏覽器測試代碼中添加有關切換到框架的方式的健全性檢查。 檢查使用的幀索引是否正確。 可以添加幾毫秒(ms)的額外等待時間,以確保完成幀加載。

  • NoSuchWindowException
  • 當切換到的窗口目標不存在時,拋出此異常。 通過使用window_handles可以解決這些情況,以便獲得當前的活動窗口集。 窗口句柄可用于對窗口句柄執行適當的操作。

  • RemoteDriverServerException
  • 當瀏覽器功能中的錯誤組合/字段導致服務器不發送響應時,將引發此異常。 為了避免此類Selenium異常,從(平臺+瀏覽器),(平臺+瀏覽器+瀏覽器版本)等的有效組合的角度徹底檢查Selenium瀏覽器功能非常重要。

  • ScreenshotException
  • 顧名思義,當無法進行屏幕捕獲時會拋出此Selenium異常。這種情況很可能出現在網頁/ Web應用程序中,其中用戶輸入了用戶名,密碼,銀行信息等敏感信息。 在這種情況下,由于屏幕截圖限制,無法捕獲屏幕截圖
    在此,屏幕截圖限制會阻止捕獲或記錄屏幕。

  • SessionNotCreatedException
  • 當新會話的創建不成功時,將發生此異常。

  • InvalidArgumentException
  • 當傳遞的參數無效或格式錯誤時,將引發InvalidArgumentException異常。

    更好的做法是使用Selenium測試自動化代碼中的適當等待時間(以毫秒為單位)來驗證是否加載了被測網頁。

  • InvalidCookieDomainException
  • 當嘗試添加Cookie的URL /域與當前URL不同時,將拋出此Selenium異常。
    要處理此異常,您應該導航到必須在其中添加Cookie的正確URL。

  • InvalidCoordinatesException
  • 向交互操作提供不正確的坐標時,將引發此特定異常。

    這也意味著依賴于鼠標位置(例如單擊)的動作之前沒有進行移動操作,或者為移動操作提供了無效的坐標。

  • InvalidElementStateException
  • 當命令無法完成時會拋出此Selenium異常,因為該元素處于無效狀態或未啟用該元素來執行該操作。 如果在不可編輯且不可重置的Web元素上嘗試執行諸如清除元素之類的操作,可能會導致這種情況。

    要在Selenium測試自動化中處理此類異常,建議在對該元素執行所需的操作之前,等待該元素被啟用。

  • InvalidSelectorException
  • 如果在不同版本之間更改了選擇器名稱,則可能會意外使用無效或不正確的選擇器來定位Web元素。 如果用于查找Web元素的選擇器未返回WebElement,則拋出InvalidSelectorException。

    當XPath表達式是選擇器并且XPath無效時,通常會發生這種情況。 這導致無法找到所需的Web元素。

  • InvalidSessionIdException
  • 如果Selenium測試自動化實現中使用的會話ID無效,即不在當前活動的會話列表中,則拋出此異常。 如果會話處于非活動狀態或從不存在,則可能發生這種情況。

  • InvalidSwitchToTargetException
  • 如果要切換到的框架或窗口目標無效,則會出現此Selenium異常。在切換到該框架之前,請使用“檢查工具”驗證目標框架的XPath,這一點很重要。

  • JavascriptException
  • 執行JavaScript代碼時出現問題時,拋出此異常。

  • NoAlertPresentException
  • 當切換到屏幕上尚不存在的警報時,會發生這種情況。 處理警報的理想方法是檢查警報是否存在,然后在Alert()類上調用所需的操作。

  • MoveTargetOutOfBoundsException
  • 如果提供給ActionChains()move方法的目標超出范圍(即無效或超出文檔/網頁),則拋出Selenium異常。

    在調用ActionChains()類的move方法之前,應始終檢查我們嘗試移動的位置,并僅在屏幕上存在該位置時才執行該操作。

  • NoSuchAttributeException
  • 這是在進行自動瀏覽器測試時肯定會遇到的少數Selenium異常之一。 如果找不到元素的屬性,則拋出NoSuchAttributeException。

    要處理此異常,應為執行測試的瀏覽器檢查屬性的存在。 同一屬性的不同屬性名稱可能因瀏覽器而異,處理效率低下可能導致此異常。

    避免發生此異常的另一種方法是通過基于DOM上元素的新詳細信息來更改屬性。

  • NoSuchCookieException
  • 當當前瀏覽上下文的活動文檔的關聯cookie中不存在與給定路徑名匹配的cookie時,會發生此Selenium異常。

  • NoSuchElementException
  • 當用于訪問元素的定位器無效或試圖對不在DOM上的元素執行操作時,將引發NoSuchElementException。 在這兩種情況下,都不會找到該元素。

    要處理此Selenium異常,應檢查選擇器是否正確,如果正確,則還需要額外等待以確保WebElement的外觀。

  • StaleElementReferenceException
  • 當對元素的引用不在頁面的DOM上時,就會發生Selenium異常。 簡而言之,該元素已腐爛或陳舊。
    此特定Selenium異常的一些可能原因是:

    • 該元素可能位于刷新的iFrame內部。
    • 該頁面可能已刷新,并且要訪問的元素不再是當前頁面的一部分。
    • 由于元素已定位,因此可以將其刪除并重新添加到屏幕。
  • 處理此異常的一種可能解決方案是使用動態XPath在循環中查找所需的元素,并在找到該元素后中斷循環。

  • TimeoutException
  • 當當前正在執行的命令未在預期的時間范圍內完成時,就會發生TimeoutException。

    解決此異常的可能解決方案是增加命令完成執行的等待時間。 但是,應該為等待時間選擇理想值,否則可能會延遲進一步執行。

  • UnableToSetCookieException
  • 在Selenium WebDriver無法設置cookie的情況下,會發生此Selenium異常。

    可以添加額外的等待時間,以便為該域加載Cookie。

  • UnexpectedAlertPresentException
  • 當出現意外警報時發生。 發生此異常的常見原因是由于頁面上出現模態窗口/彈出窗口而導致Selenium WebDriver命令被阻止。

  • UnexpectedTagNameException
  • 如果支持類無法找到所需的Web元素,則會發生此Selenium異常。

  • UnknownMethodException
  • 這是常見的Selenium異常之一,當請求的命令能夠匹配已知URL但無法匹配該URL的方法時,就會發生這種異常。
    要處理此異常,應檢查與URL一起傳遞的方法是否有效。

  • WebDriverException
  • 這是由于Selenium WebDriver和目標Web瀏覽器的綁定不兼容而發生的基本WebDriver異常。

    要處理此異常,您應該下載與相應的Web瀏覽器兼容的Selenium WebDriver庫。

    Java中的Selenium異常

    一些Selenium異常特定于用于測試自動化的特定編程語言 。 除了上一節中介紹的Selenium中的常見異常外,以下是特定于Java語言的Selenium異常:

  • ConnectionClosedException
  • 與Selenium WebDriver的連接丟失時,將引發此異常。

  • ErrorHandler.UnknownServerException
  • 服務器返回錯誤而沒有堆棧跟蹤時,它將用作占位符。

  • JsonException
  • 當您能夠獲得未創建會話的會話功能時,將引發此異常。

  • NoSuchSessionException
  • 在執行WebDriver.quit()后調用命令時,將拋出此Selenium異常。 由于WebDriver實例不再存在,因此對該特定WebDriver實例的任何操作都將返回此異常。

  • NotFoundException
  • 當DOM上不存在任何元素時,將發生此異常。

  • ScriptTimeoutException
  • 當ASync腳本的執行未在給定的時間限制內完成時,將引發該錯誤。

  • UnhandledAlertException
  • 此Selenium異常是WebDriver異常的子類。 即使存在警報,WebDriver也無法執行警報操作時,將引發該事件。

  • UnreachableBrowserException
  • UnreachableBrowserException表示與由自動化測試代碼控制的Web瀏覽器通信時出現問題。 也可能是由于與Selenium服務器通信時出現問題。

    如果遠程Selenium WebDriver或Selenium網格的服務器地址無效,則可能發生這種情況。 瀏覽器實例也有可能在Selenium測試自動化周期中死亡。

  • UnsupportedCommandException
  • 當遠程Selenium WebDriver發送的命令無效時,拋出此異常。

  • NoSuchContextException
  • 此異常在移動測試中發生,并由ContextAware.context(String)引發

  • NotConnectedException
  • 當在規定的時間段內嘗試連接后,對特定主機或遠程Selenium網格的嘗試失敗時,將引發此Selenium異常。

  • SeleniumException
  • 顧名思義,當Selenium命令失敗時,會拋出Selenium異常。

  • UnableToCreateProfileException
  • 當使用某些自定義配置文件打開要執行Selenium測試自動化的瀏覽器,但WebDriver或瀏覽器在支持該配置文件時出現問題時,將發生UnableToCreateProfileException。

    要處理此異常,建議檢查安裝的Selenium WebDriver版本以及Web瀏覽器支持的配置文件。

  • UrlChecker.TimeoutException
  • 當瀏覽器嘗試一段時間后無法打開被測URL時,拋出此異常。

    要處理此Selenium異常,必須在嘗試在瀏覽器(測試中)中打開URL之前檢查URL的正確性。

    C#中的硒異常

    特定于C#的Selenium異常是:

  • DriverServiceNotFoundException
  • 當在其上執行自動瀏覽器測試的元素不可見時,將引發DriverServiceNotFoundException類下的異常。
    要處理此異常,僅在確認Web元素的存在可見性之后,您可以等待頁面完全加載并執行Selenium WebDriver命令。

  • WebDriverTimeoutException
  • WebDriverTimeoutException類表示在執行操作時發生錯誤時引發的異常。

    獎勵積分,在這里我們給出一個韻母數

  • XPathLookupException
  • XPath查找過程中發生錯誤時引發的Selenium異常。

    常見JavaScript錯誤以及如何處理

    處理硒異常

    Selenium異常的處理方式因一種編程語言而異。 但是,最重要的是應該處理硒異常,因為該異常提供了非常關鍵的信息。

    以下是在流行的編程語言中如何處理Selenium異常的簡要要點:

    Python –如果您使用Python進行自動瀏覽器測試 ,則selenium.common.exceptions中提供了異常類,應在使用該包中的任何命令之前將其導入。

    異常是使用try ... except塊進行處理的,其中try塊使您能夠測試代碼是否存在錯誤,except塊可以幫助您處理錯誤,并且無論try塊是否引發錯誤,都將執行可選的finally塊。

    Java – Selenium異常是使用try-catch方法在Java中處理的。 try塊是該塊的開始,catch塊包含解決異常的實現。 catch塊放置在try塊的末尾。
    與Python一樣,您也可以使用finally關鍵字創建一個代碼塊,無論是否發生異常,該代碼塊都會執行。

    C# –與Java一樣,Selenium異常使用try-catch語句處理。 try塊包含可能導致異常的代碼。 在成功執行代碼或引發異常之前,將執行try塊下的代碼。 catch塊包含不同異常的處理程序。

    另請閱讀: Selenium Automation中的常見挑戰及其解決方法?

    總而言之

    異常在開發中非常普遍,但必須謹慎處理。 了解不同的Selenium異常非常重要,因為這有助于開發更強大的自動瀏覽器測試腳本。

    Selenium測試自動化中的異常處理有助于識別與瀏覽器/平臺/設備有關的跨瀏覽器兼容性問題。

    您用于處理Selenium異常的機制有哪些,請在注釋部分保留您的經驗……

    快樂測試

    翻譯自: https://www.javacodegeeks.com/2020/05/49-most-common-selenium-exceptions-for-automation-testing.html

    總結

    以上是生活随笔為你收集整理的49自动化测试中最常见的硒异常的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。