自动化踩坑记之——点点点,点了个寂寞?

上一贴,我们讲了如何定位到元素,接下来就激动的开始搓手手,准备点点点了。点点点常涉及页面的跳转等,故而实际操作中我们常会发现,因一步的元素没点上,导致用例执行失败。
当元素未成功点击时,可参考以下方法逐个排查处理:

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)])
讨论数量: 1

可以。。。

4年前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!