selenium各種動態等待場景

2021-08-11 05:11:14 字數 1493 閱讀 4137

使用selenium開發瀏覽器自動化程式一定會經常遇到頁面載入等待的問題,由於不同的**會有各種不同的動態載入機制,如果設定延時不恰當,那麼程式異常報錯將變成家常便飯,所以巧妙的設定好動態的延時才能開發出穩定高效的程式。

常用等待頁面載入的方法:

#開發測試階段會用到,生產環境極少用到

import time

time.sleep(x)

#生產大量使用

from selenium.webdriver.support.ui import webdriverwait

from selenium.webdriver.support import expected_conditions as ec

from selenium.webdriver.common.by import by

webdriverwait(driver, x).until(condition)

webdriverwait常見用法:

#by id

webdriverwait(driver,30).until(ec.presence_of_element_located((by.id,'menu')))

#by xpath

webdriverwait(driver,30).until(ec.presence_of_element_located((by.xpath,'//*[@id="ajax_response"]/table[1]')))

#by link text

webdriverwait(driver,30).until(ec.presence_of_element_located((by.link_text,'software')))

webdriverwait(driver,30).until(lambda driver: driver.find_element_by_xpath('//*[@id="export"]/div/div[2]/span[2]/a').is_displayed())
# 當前瀏覽器tab數量大於1時,將driver切換到第二個瀏覽器tab

defwait_newtab

(driver):

if len(driver.window_handles) > 1:

return

true

else:

return

false

webdriverwait(driver,30).until(lambda driver: wait_newtab(driver))

driver.switch_to.window(driver.window_handles[1])

把自定義等待條件寫成單獨的方法,當條件滿足時返回true, 當條件不滿足時,則返回false, 然後用上述方法去呼叫自定義等待函式,達到靈活等待的目的。

Selenium 元素等待

這是乙個在寫自動化指令碼時經常遇到的問題。試想這樣的乙個場景,通過指令碼開啟乙個網頁,可是由於網路的問題頁面並沒有及時載入進來,這時候如果已經執行到之後查詢元素的 那麼勢必會丟擲錯誤找不到相應元素,而事實並非如此。如果沒有合適的元素等待處理,這樣的測試 不僅不夠健壯,過多的誤報會消耗測試人員大量的精...

Selenium元素等待

一 為什麼要使用元素等待?原因 由於電腦配置或者網路原因,在查詢元素時,元素 未在第一時間內被載入出來,而丟擲未能找到元素的異常。二 什麼是元素等待?元素在第一次未找到時,元素等待設定的時長被啟用,如果在設定的有效時長內找到元素,繼續執行 如果超出設定的時長未找到元素,丟擲未找到元素異常。三 元素等...

selenium 顯示等待

顯示等待的 定義了等待條件,只有該條件觸發,才執行後續 最垃圾的顯示等待就是使用 time.sleep 這種情況是指定了固定的等待時長。存在一些特別方便的方法,可以使你的 只等待需要的時常,而不是固定的時常。webdriverwait 和 expectedcondition 組合使用,就是一種有效的...