WebDriver 中如何檢查乙個元素是否存在?

2021-09-29 01:14:53 字數 1166 閱讀 4658

起因:最近自做乙個ui自動化註冊的事情,在使用 webdriver 的過程中遇到了頁面元素可能不存在的問題,因為元素不存在,再執行元素的相關操作的時候就會超時等待和丟擲異常,所以為了處理不存在,就是用了 try / catch 的方式處理了一下,如果 try 中的不存在,那就執行 catch 中的**邏輯。

try

catch

(nosuchelementexception e)

上面的**存在的問題:

1、 **不美觀

2、使用 try / catch 時如果元素不存在,等待的時間很長,大約需要30秒,這樣的速度實在是影響效率

思考:

真的只有使用try / catch 唯一可能的方式?

解決辦法:

可以使用driver.findelements( by.id("element") ).size() != 0來判斷元素是否存在,可以避免 try / catch,提高**執行效率

// 設定超時等待為0毫秒

driver.

manage()

.timeouts()

.implicitlywait(0

, timeunit.milliseconds)

;boolean elementexists;

// 利用seiz()方法來判斷元素是否存在

elementexists = driver.

findelements

( by.id(

"element_a"))

.size()

!=0;if

(elementexists)

else

// 重新設定預設的超時等待時間

driver.

manage()

.timeouts()

.implicitlywait(30

, timeunit.seconds)

;

webdriver中的等待

webdriver中的等待 主要講解webdriverwait 強制等待 sleep import time sleep 5 等待5秒 設定固定休眠時間,單位為秒。由python的time包提供,匯入 time 包後就可以使用。缺點 不智慧型,使用太多的sleep會影響指令碼執行速度。隱式等待 im...

webdriver中多視窗 控制代碼(handle)

元素有屬性,瀏覽器的視窗其實也有屬性的,叧是你看丌刡,瀏覽器視窗的屬性用控制代碼 handle 來識刪。獲取當前頁面的控制代碼 driver.current window handle 獲取所有控制代碼 driver.window handles 切換視窗 driver.switch to.wind...

如何檢查C 中的記憶體洩漏

如何檢查c 中的記憶體洩漏 記憶體洩漏是程式設計中常常見到的乙個問題,我所遇過的原因有兩個 1.分配完記憶體後忘記 2.有問題,造成想 卻無法 例如 int p new int p new int p指標修改,原來申請記憶體的位址沒有記錄下來,於是無法釋放 下面介紹如何檢查記憶體洩漏 1.包含標頭檔...