做UI自动化点击时,使用显示等待点击,一般情况不会出现点击失败的情况,代码类似:
WebDriverWait(self.driver, self.time_out, 0.25).until(EC.element_to_be_clickable(*loc))
但有些特殊情况,会遇到如下错误,错误信息如下:
*** is not clickable at point (*, *). Other element would receive the click
通过多次页面测试发现,webdriver查找状态是可点击的,但是鼠标放上去,并未变成可点击的小手状态,时间原因,也没有具体分析出现这种情况的原因,直接使用js直接点击:
target = self.wait_element_clickable(loc)
if target:
self.driver.execute_script('arguments[0].click()', target)
使用此种方法后,没有出现过类似问题。
但这个点击方法和webdriver有些区别,除非不得已,不然还是建议通过webdriver点击。
其实无法点击到元素,可能有很多种原因,如:元素在iframe中,元素是二级或以上菜单,需要鼠标移动到一级菜单后才能显示等等各种情况,遇到后,需要具体问题具体分析,后续会对这类问题做个总结。