元素定位時間問題詳解

一.前言:web

在自動化過程當中,元素出現受網絡環境,設備性能等多種因素影響。所以元素加載的時間可能不一致,從而會致使元素沒法定位超時報錯,可是實際上元素是正常加載了的,只是出現時間晚一點而已。那麼如何解決這個問題呢?網絡

二.正文ide

1.元素等待做用函數

設置元素等待能夠更加靈活的制定等待定位元素的時間,從而加強腳本的健壯性,提升執行效率。性能

2.元素等待類型ui

a.強制等待ci

設置固定的等待時間,使用sleep()方法便可實現element

from time import sleepselenium

強制等待5秒it

sleep(5)

b.隱式等待

隱式等待是針對所有元素設置的等待時間

driver.implicitly_wait(20)

c.顯式等待

顯式等待是針對某個元素來設置的等待時間。

方法WebDriverWait格式參數以下:

from selenium.webdriver.support.ui import WebDriverWait

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

driver : WebDriver

timeout : 最長超時時間,默認以秒爲單位

poll_frequency : 休眠時間的間隔時間,默認爲0.5秒

ignored_exceptions : 超時後的異常信息,默認狀況下拋NoSuchElementException異常。

WebDriverWait()通常和until()或until_not()方法配合使用,另外,lambda提供了一個運行時動態建立函數的方法。

from selenium.webdriver.support.ui import WebDriverWait

WebDriverWait(driver,10).until(lambda x:x.find_element_by_id(「elementID」))

實戰案例

element_wait.py

from find_element.xiaomi_login import driver

from selenium.webdriver.support.ui import WebDriverWait

WebDriverWait(driver,3).until(lambda x:x.find_element_by_id(‘com.xiaomi.shopping:id/mainactivity_button_btn1’))

driver.find_element_by_id(‘com.xiaomi.shopping:id/mainactivity_button_btn1’).click()

三.寫在最後:

沒有一個寒冬不會過去,沒有一個春天不會來臨,不忘初心,繼續堅持,相信你終會開出一朵是屬於本身的花兒來。

相關文章
相關標籤/搜索