亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Selenium的等待方式有哪些

發布時間:2022-02-15 11:26:07 來源:億速云 閱讀:161 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Selenium的等待方式有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1、強制等待(sleep)

from time import sleep
sleep(3)  # 強制等待3秒

缺點:由于Web加載的速度取決于測試的硬件、網速、服務器的響應時間等因素。如果等待時間太長,容易造成時間浪費,如果等待時間太短又可能會造成在web還沒有加載完所需要定位的element,而出現報錯。
由于等待時間無法確定,使用太多的sleep會影響運行速度,大大地降低效率,所以建議測試中盡量少使用強制等待。

2、隱式等待 ( implicitly_wait)

# 隱式等待10s
driver.implicitly_wait(10)

簡介:隱式等待是全局的是針對所有元素,設置等待時間如10秒,如果10秒內出現,則繼續向下,否則拋異常。可以理解為在10秒以內,不停刷新看元素是否加載出來。

使用場景:隱式等待只需要聲明一次,一般在打開瀏覽器后進行聲明。聲明之后對整個drvier的生命周期都有效,后面不用重復聲明。隱式等待存在一個問題,那就是程序會一直等待整個頁面加載完成,也就是一般情況下你看到瀏覽器標簽欄那個小圈不再轉,才會執行下一步,但有時候頁面想要的元素早就在加載完成了,但是因為個別js之類的東西特別慢,仍得等到頁面全部完成才能執行下一步。

3、顯示等待 ( expected_conditions)

簡介:顯示等待是單獨針對某個元素,設置一個等待時間如5秒,每隔0.5秒檢查一次是否出現,如果在5秒之前任何時候出現,則繼續向下,一般需要配合該類的 until() 和 until_not() 方法一起用,直到超過設置的最長時間,然后拋出超時錯誤 TimeoutException,以下介紹幾個最常用的方法:

1. 判斷element是否可見:visibility_of_element_located(locator) (可見代表element非隱藏,并且element寬和高都不等于 0)

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
# 示例
target = EC.visibility_of_element_located(By.ID,'user')
 
# 配合until()使用(等待元素可見)
# 5表示 最長超時時間,默認以秒為單位; 1表示檢測的間隔步長,在等待期間,每隔一定時間(默認0.5秒),調用until或until_not里的方法,直到它返回True或False.
WebDriverWait(driver, 5, 1).until(EC.visibility_of_element_located(By.ID,'user'))
# 配合until_not()使用(等待元素不可見)
WebDriverWait(driver, 5, 1).until_not(EC.visibility_of_element_located(By.ID,'user'))
 
# 在類中封裝為一個函數
    def wait_eleLocated(self, loc, timeout=30, poll_frequency=0.5, model=None):
        """
        :param loc:元素定位表達;元組類型,表達方式(元素定位類型,元素定位方法),示例:(By.ID, "kw")
        :param timeout:超時時間
        :param poll_frequency:輪詢頻率
        :param model:等待失敗時,截圖操作,圖片文件中需要表達的功能標注
        :return:None
        """
        self.logger.info(f'等待"{model}"元素,定位方式:{loc}')
        try:
            start = datetime.now()
            WebDriverWait(self.driver, timeout, poll_frequency).until(EC.visibility_of_element_located(loc))
            end = datetime.now()
            self.logger.info(f'等待"{model}"時長:{end - start}')
        except TimeoutException:
            self.logger.exception(f'等待"{model}"元素失敗,定位方式:{loc}')
            # 截圖
            self.save_webImgs(f"等待元素[{model}]出現異常")
            raise

2. 判斷某個element是否被加載到dom樹:presence_of_element_located(locator) (并不代表該element一定可見)

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
 
target = EC.presence_of_element_located(By.ID,'user')

3. 判斷某個element中是否可見并且可點擊:element_to_be_clickable(locator)

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
 
target = EC.element_to_be_clickable(By.ID,'user')

4. 判斷某個element是否被選中:element_to_be_selected(element) (一般用在下拉列表)

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
 
element = driver.find_element_by_class_name('selector')
EC.element_to_be_selected(element)

感謝各位的閱讀!關于“Selenium的等待方式有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜昌市| 大埔区| 沧州市| 南充市| 古交市| 黄陵县| 汉阴县| 河源市| 青川县| 芜湖市| 曲松县| 高唐县| 江口县| 来安县| 屏东县| 繁昌县| 新津县| 兴海县| 五寨县| 聊城市| 天峨县| 宜君县| 浦县| 日土县| 巴林右旗| 云浮市| 潢川县| 陆河县| 大安市| 定边县| 广州市| 博爱县| 彝良县| 花莲县| 娱乐| 河北区| 黄石市| 松原市| 临沂市| 曲沃县| 东丽区|