使用Selenium時,觸發點擊事件,經常報如下異常:
Element is not clickable at point
1、未加載
沒加載出來就等待元素加載出來,再往下執行。
可以使用python庫time
不過最好還是使用selenium自帶WebDriverWait
2、在iframe里
如果元素在iframe里,在窗口里找是找不到元素的,更是無法點擊。所以,要切換到iframe里去找元素。
3、不在視窗里,需要拉滾動條
很多網站的列表頁不是立馬返回所有內容,是根據視圖來顯示的。所以,我們就需要拖動滾動條來把要獲取的內容顯示到視窗里才可以獲取到。
js="var q=document.documentElement.scrollTop=100000" driver.execut_script(js)
#滑動到頂部 js="var q=document.documentElement.scrollTop=0" driver.execut_script(js)
#滑到底部 js="window.scrollTo(0,100000)" driver.execute_script(js)
#滑動到頂部 js="window.scrollTo(0,0)" driver.execute_script(js)
目前在firefox,chrome上驗證都是可以跑通的
4、要點擊的元素被覆蓋
可以使用事件鏈來解決
例如下拉菜單,通過hover,讓子菜單顯示,就可以點擊了。
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
4、要點擊的元素被遮擋
如圖:無法點擊go,被前面的懸浮元素遮擋
————————————————
版權聲明:本文為CSDN博主「lzg_zone」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lzg_zone/java/article/details/81239421