常見的Selenium異常

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

1、ElementClickInterceptedException

由于以某種方式隱藏了接收到click命令的元素,因此無法正確執行Element Click命令。

2、ElementNotInteractableException

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

3、ElementNotSelectableException

當目標元素存在于DOM上但由于無法選擇而無法與之交互時,就會發生此Selenium異常。

4、ElementNotVisibleException

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

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

5、ErrorInResponseException

當服務器端發生某些問題或錯誤時,將拋出這個Selenium異常。如果錯誤的用戶名和訪問密鑰的組合用于訪問基于云的遠程Selenium Grid,在與遠程Web驅動程序服務器進行通信或與Firefox擴展(或Chrome拓展)進行通信,則可能會發生這種情況。

服務器端錯誤的一些常見響應代碼是:

401:未經授權

400:錯誤的請求

500:內部服務器錯誤

409:沖突

403:禁止

405:方法被禁止

6、ImeActivationFailedException

如果IME(輸入法)的激活由于某種原因失敗,則拋出此異常。解決此問題的理想方法是檢查計算機上是否有IME支持。

7、ImeNotAvailableException

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

8、InsecureCertificateException

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

9、NoSuchFrameException

當要切換到的iframe不存在時,將引發NoSuchFrameException這個Selenium異常。

為避免此類Selenium異常,建議在基于瀏覽器的自動化測試代碼中添加有關切換到iframe的方式時進行健全性檢查。檢查使用的iframe索引是否正確??梢蕴砑訋装俸撩耄╩s)的額外等待時間,以確保完成iframe加載。

10、NoSuchWindowException

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

11、RemoteDriverServerException

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

12、ScreenshotException

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

13、SessionNotCreatedException

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

14、InvalidArgumentException

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

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

15、InvalidCookieDomainException

當嘗試添加cookie的URL/host與當前URL不同時,將拋出此Selenium異常。

要處理此異常,測試人員編寫代碼時應該導航到必須在其中添加Cookie的正確URL地址。

16、InvalidCoordinatesException

將錯誤的坐標提供給交互操作時,將引發此特定異常。

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

17、InvalidElementStateException

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

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

18、InvalidSelectorException

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

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

19、InvalidSessionIdException

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

20、InvalidSwitchToTargetException

如果要切換到的iframe或window你目標無效,則會出現此Selenium異常。在切換到該iframe之前,請使用檢查工具驗證目標框架的XPath,可以避免次異常的發生。