selenium-三種等待方式總結(jié)

隱式等待:implicitly_wait(time)? time默認(rèn)為0?

原理:瀏覽器在查找元素的時(shí)候沒(méi)有找到,就會(huì)等待一段時(shí)間再去查找。?

網(wǎng)頁(yè)在加載的時(shí)候需要加載各種HTML標(biāo)簽、JS文件 等,加載有先后順序,所以可能某些元素在查找的時(shí)候還未加載出來(lái),所以設(shè)置一些時(shí)間,等元素出現(xiàn)之后我們?cè)偃ゼ虞d

弊端:影響整個(gè)頁(yè)面,必須得等所有的頁(yè)面都加載完成了才會(huì)進(jìn)行下一步,這樣就增加了不必要的等待時(shí)間

顯示等待:

WebDriverWait(timeout,poll_frequency,ignore_exception),和? expected_conditions 結(jié)合使用

如果說(shuō)隱式等待是全局變量,顯示等待就是局部變量,只針對(duì)某個(gè)元素生效

例如:例如需要定位某個(gè)元素的時(shí)候,這個(gè)元素是不可見(jiàn)得,可以設(shè)置等待條件為等這個(gè)元素可見(jiàn)

參數(shù)分析:

timeout?? 最大超時(shí)時(shí)間

poll_frequency: 執(zhí)行間隔,例如設(shè)置為0.5,就是每隔0.5秒查找一次

ignore_exception:需要忽略的異常

結(jié)合 unit()? 和unit_not 使用

unit(method,message='')?

調(diào)用method 方法,method 會(huì)返回一個(gè)value?? ,否則就是是拋出異常,返回message 信息

unit_not(method,message='')

同unit 同理,只不過(guò)if vaue 變成了 ifnot value



method 函數(shù)列表如下

title_is:判斷當(dāng)前頁(yè)面的title是否等于預(yù)期

title_contains:判斷當(dāng)前頁(yè)面的title是否包含預(yù)期字符串

presence_of_element_located:判斷某個(gè)元素是否被加到了dom樹(shù)里,并不代表該元素一定可見(jiàn)

visibility_of_element_located:判斷某個(gè)元素是否可見(jiàn). 可見(jiàn)代表元素非隱藏,并且元素的寬和高都不等于0

visibility_of:跟上面的方法做一樣的事情,只是上面的方法要傳入locator,這個(gè)方法直接傳定位到的element就好了

presence_of_all_elements_located:判斷是否至少有1個(gè)元素存在于dom樹(shù)中。舉個(gè)例子,如果頁(yè)面上有n個(gè)元素的class都是'column-md-3',那么只要有1個(gè)元素存在,這個(gè)方法就返回True

text_to_be_present_in_element:判斷某個(gè)元素中的text是否 包含 了預(yù)期的字符串

text_to_be_present_in_element_value:判斷某個(gè)元素中的value屬性是否包含了預(yù)期的字符串

frame_to_be_available_and_switch_to_it:判斷該frame是否可以switch進(jìn)去,如果可以的話,返回True并且switch進(jìn)去,否則返回False

invisibility_of_element_located:判斷某個(gè)元素中是否不存在于dom樹(shù)或不可見(jiàn)

element_to_be_clickable - it is Displayed and Enabled:判斷某個(gè)元素中是否可見(jiàn)并且是enable的,這樣的話才叫clickable

staleness_of:等某個(gè)元素從dom樹(shù)中移除,注意,這個(gè)方法也是返回True或False

element_to_be_selected:判斷某個(gè)元素是否被選中了,一般用在下拉列表

element_located_to_be_selected

element_selection_state_to_be:判斷某個(gè)元素的選中狀態(tài)是否符合預(yù)期

element_located_selection_state_to_be:跟上面的方法作用一樣,只是上面的方法傳入定位到的element,而這個(gè)方法傳入locator

alert_is_present:判斷頁(yè)面上是否存在alert

常用的函數(shù)有 :

presence_of_element_located (object)

presence_of_all_elements_located(object)

也可以自己寫(xiě)一個(gè)method 傳進(jìn)去使用


sleep 強(qiáng)制等待
time.sleep(time)?? 根據(jù)網(wǎng)站的響應(yīng)速度來(lái)自定義sleep 時(shí)間


個(gè)認(rèn)看法:三種方式可以配合使用,到達(dá)最好效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容