自动化踩坑记之——点点点,点了个寂寞?
上一贴,我们讲了如何定位到元素,接下来就激动的开始搓手手,准备点点点了。点点点常涉及页面的跳转等,故而实际操作中我们常会发现,因一步的元素没点上,导致用例执行失败。
当元素未成功点击时,可参考以下方法逐个排查处理:
1.点击元素不在当前页面
将页面滑到元素所在位置再点击
i=0
while i < 10:
try:
driver.find_element_by_xpath("path").click()#尝试点击元素
break
except Exception as e:
driver.swipe(width/2,height*0.8,width/2,height*0.2)#滑动屏幕
i=i+1
2.点击元素被遮挡(手机键盘等,先处理遮挡)
driver.hide_keyboard()
3.改为tap,开发代码监听事件为tap
from selenium.webdriver.common.touch_actions import TouchActions
el = driver.find_element_by_xpath('//*[text()="酒店问题"]') TouchActions(driver).tap(el).perform()
4.Element is not clickable at point,Other element would receive the click: xxx
button外包含了特别多的div和复杂的样式,使用源生click时,单击事件被上层div接收了.使用以下方式
#方法1-JS处理
driver.execute_script("arguments[0].click();", btn_div)
#方法2-双点击
先点击父节点,再点击子节点
5.Message: element not interactable 元素不可交互的问题解决方案
1.点击过快,加延时处理(延时处理参考上篇)
2.元素为隐藏元素:
查看元素属性是否为隐藏,替换为非隐藏元素
6.若以上方法都没有成功,则使用终极大法
点击坐标(非特殊情况,不推荐使用!!!)
self.driver.tap([(target_x, y)])
可以。。。