動態

詳情 返回 返回

第二篇:Selenium 中 expected_conditions 模塊詳解 - 動態 詳情

在 Web 自動化測試領域,Selenium 是一個廣泛使用的工具,而其中的 expected_conditions 模塊更是為測試過程帶來了極大的便利。特別是遇到網站結構複雜、網絡加載慢或異常、主機資源緊張以及一些其他的意外場景,使用預期條件,判斷自動化測試動作是否符合預期,顯得尤為重要。接下來的內容是基於selenium版本4.30.0。

一、模塊概述 expected_conditions 模塊定義了一系列用於等待特定條件滿足的函數。在 Web 自動化測試中,頁面加載、元素出現和狀態變化等操作往往不是瞬間完成的,需要適當的等待機制,以確保測試的穩定性和準確性。這些函數就是為此而生,它們能夠讓測試腳本在特定條件達成後再繼續執行,避免因頁面未準備好而導致的測試失敗。

二、核心函數介紹

(一)頁面標題相關

1.title_is(title: str) -> Callable[[WebDriver], bool]

確保當前頁面的標題與預期標題一致,常用於驗證頁面跳轉是否正確。例如,當用户登錄後,期望跳轉到的用户個人信息頁面有特定標題,就可以用此函數進行驗證。

2.title_contains(title: str) -> Callable[[WebDriver], bool]

相比於精確匹配標題,此函數更靈活,可用於確認頁面標題中是否包含關鍵信息片段。例如,在多語言網站中,標題可能有多種語言版本,但都包含某個核心詞彙,就可通過這種方式驗證。

(二)元素存在與可見性相關

1.presence_of_element_located(locator: Tuple[str, str]) -> Callable[[WebDriverOrWebElement], WebElement]

在執行某些操作前,確認目標元素在頁面結構中已加載。例如,在填寫表單前,確保表單元素已存在於頁面。

2.visibility_of_element_located(locator: Tuple[str, str]) -> Callable[[WebDriverOrWebElement], Union[Literal[False], WebElement]]

當需要與頁面上實際可見的元素進行交互時,此函數非常有用。例如,點擊一個按鈕前,確保按鈕可見且可操作。

3.visibility_of(element: WebElement) -> Callable[[Any], Union[Literal[False], WebElement]]

在已經獲取到元素對象的情況下,進一步確認該元素是否可見,以便進行後續操作。例如,在一組元素中,篩選出可見的元素進行處理。

(三)URL 相關

1.url_contains(url: str) -> Callable[[WebDriver], bool]

用於驗證頁面跳轉後的 URL 是否包含特定的參數或路徑信息。例如,在用户點擊某個鏈接後,檢查新頁面的 URL 是否包含與該鏈接相關的標識。

2.url_matches(pattern: str) -> Callable[[WebDriver], bool]

適用於需要對 URL 進行更復雜匹配的場景,例如驗證 URL 的格式或特定部分的內容。

(四)元素文本與屬性相關

1.text_to_be_present_in_element(locator: Tuple[str, str], text_: str) -> Callable[[WebDriverOrWebElement], bool]

常用於驗證頁面元素上顯示的文本是否符合預期。例如,驗證商品詳情頁中商品描述是否包含特定關鍵詞。

2.text_to_be_present_in_element_value(locator: Tuple[str, str], text_: str) -> Callable[[WebDriverOrWebElement], bool]

對於表單元素等有 value 屬性的元素,驗證其值是否符合預期。例如,驗證輸入框在輸入內容後,其 value 屬性是否正確更新。

(五)框架相關

1.frame_to_be_available_and_switch_to_it(locator: Union[Tuple[str, str], str, WebElement]) -> Callable[[WebDriver], bool]

當頁面中存在框架結構,且需要操作框架內的元素時,首先要確保框架可用並切換到該框架。例如,在包含廣告框架和主內容框架的頁面中,操作主內容框架內的元素前,需切換到主內容框架。

(六)元素狀態相關

1.element_to_be_clickable(mark: Union[WebElement, Tuple[str, str]]) -> Callable[[WebDriverOrWebElement], Union[Literal[False], WebElement]]

確保在點擊元素時,元素處於可操作狀態,避免因元素不可見或未啓用而導致的點擊失敗。例如,在提交表單前,確保提交按鈕可點擊。

2.staleness_of(element: WebElement) -> Callable[[Any], bool]

用於驗證某個操作後,特定元素是否已從頁面中移除或更新。例如,在刪除一條記錄後,驗證該記錄對應的元素是否已失效。

(七)組合條件函數

1.any_of(*expected_conditions: Callable[[D], T]) -> Callable[[D], Union[Literal[False], T]]

當有多個可能的條件需要滿足,但不確定具體哪個條件會先達成時,使用此函數。例如,在等待頁面加載完成時,可能存在多個元素加載完成都意味着頁面加載成功,此時可以將這些元素的存在或可見條件組合起來。

2.all_of(*expected_conditions: Callable[[D], Union[T, Literal[False]]]) -> Callable[[D], Union[List[T], Literal[False]]]

當有多個可能的條件需要滿足,需要同時滿足這些條件時,使用此函數。

3.none_of(*expected_conditions: Callable[[D], Any]) -> Callable[[D], bool]

檢查多個預期條件是否全部為假

Add a new 評論

Some HTML is okay.