selenium报错Element is not clickable at point的几种情况

总结下selenium触发点击事件报Element is not clickable at point的几种情况:

1、元素未加载出来就进行了点击

解决方法:在点击之前使用显示等待

WebDriverWait(driver, timeout=).until(EC.visibility_of_element_located(元素的定位方式,元素定位表达式))

2、需要点击的元素在frame/iframe中

解决方法:切换到目标元素所在的frame

# 1、切换到目标元素所在的frame中
# iframe有name或id值
self.driver.switch_to.frame('iframe-name/id')

# iframe没有name或id值
xf = self.driver.find_element_by_xpath('//iframe[@allowtransparency="true"]')
self.driver.switch_to.frame(xf)

# 2、进行元素的点击操作

# 3、回到最外层的frame
# 返回最外层iframe
self.driver.switch_to.default_content()

3、需要点击的元素没有在浏览器可见的视图内

解决方法:通过js来将元素滚动到可见的范围内

ele = self.find_element_by_id("元素")
driver.execute_script("arguments[0].scrollIntoView(false);", ele)
ele.click()

4、元素被遮挡

4.1、点击了上一个元素,但是上一个元素的弹框一直不会消失,弹框遮挡住了要被点击的元素

解决方法:可以通过点击页面的其余的地方使弹框消失后,然后在点击目标元素

4.2、下拉菜单

解决方法:先鼠标移动到主菜单,然后在点击下拉菜单

select = self.find_element_by_id("select")
select_option = self.find_elements_by_id("select_option")[1]
ActionChains(driver).move_to_element(select).click(select_option ).perform()

4.3、点击input框后出现下拉选项的元素

解决方法: 通常input元素会在div元素的下面,这种的需要先点击div,才能点击input

div_ele = self.find_element_by_xpath("//div[@id='code']")
input_ele = self.find_element_by_xpath("//input[@id='code']")
div_ele.click()
time.slpee(0.5)
input_ele.click()

目前遇到的就这几种,如果还有遇到其余情况希望大家留言补充。

你可能感兴趣的:(selenium)