使用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