自动化踩坑记之——点点点,点了个寂寞?
上一贴,我们讲了如何定位到元素,接下来就激动的开始搓手手,准备点点点了。点点点常涉及页面的跳转等,故而实际操作中我们常会发现,因一步的元素没点上,导致用例执行失败。
当元素未成功点击时,可参考以下方法逐个排查处理:
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)])
可以。。。