selenium元素定位---ElementClickInterceptedException(元素點擊交互異常)解決方法
1、異常原因
在編寫ui自動化時,執行報錯元素無法點擊:ElementClickInterceptedException
具體報錯:selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <span class="el-checkbox__inner">
</span> is not clickable at point (1421, 283). Other element would receive the click: <div class="cell">...</div>
E (Session info: chrome=104.0.5112.102)
意思是,元素定位相互覆蓋,元素已經找到,但是無法點擊
2、解決方法:
方法一:使用強制等待,但是每次都有類似的元素無法點擊使用強制等待的話會延長腳本執行時間
time.sleep()
前言:之前便遇到過很多次該問題的報錯,就沒有管它,但是隨著越來越多的元素報該錯,每次使用強制等待會大大延長腳本的執行時間,于是便網上找各種方法解決該問題,最終發現是自己使用顯示等待的方法錯了
如下是顯示等待的用法和區別
方法二:顯性等待
element_to_be_clickable--元素是否可點擊
vibility _of_ element_ located--元素是否可見
presence_of_element_located--元素是否存在
如上:三種等待方法,最開始我一直使用的是presence_of_element_located,判斷元素是否存在,最終還是報錯,提示元素元素點擊攔截異常
百度了下使用element_to_be_clickable--等待元素出現可以點擊,就執行成功了

方法三:使用JS點擊
然而有時即使已經顯式等待了,卻仍然會報錯: ElementClickInterceptedException,這多少有點奇怪,為什么 webdriver 有時就是無法點擊,我不知道,也許這和他首先執行的一些驗證檢查有關,反正就在這一刻,它不給你點
解決方法:

?? 這是通過 JavaScript 完成的點擊,js可以避開校驗
以上便是在編寫自動化時元素定位時踩的坑,以此記錄防止再次踩坑
浙公網安備 33010602011771號