selenium处理元素定位点击无效问题

yipeiwu_com6年前Python基础

在WEB自动化测试过程中,经常会遇到这样的问题:

元素定位到了,但是点击无效?有人可能会问了,怎么判断元素定位到了,这个问题很好判断

1.给元素加高亮显示

  self.driver.execute_script(
   "arguments[0].setAttribute('style', arguments[1]);",
   element,
   "border: 2px solid red;" #边框border:2px; red红色
  )

arguments[0] 这个参数,可以理解为python中的字符串格式化。比如"{}{}".format('aaa','bbbb')

2.执行点击过程不报错。

不会报一些找不到元素之类的错误。

怎么判断元素定位到了,点击没成功(这里说一下,一般是做了点击操作,只是我们直观去判断没有点击成功)

那么,现在来说一下如何解决这个问题。

解决问题:

1.分析一下,默认selenium的点击操作是点元素0,0点坐标,那么我们可以在元素x,y坐标上加5,让点击操作往里一点。

导入包ActionChains,

from selenium.webdriver.common.action_chains import ActionChains
ele = self.find_element(*loc)
ActionChains(driver).move_to_element(ele).move_by_offset(5,5).click().perform()

通过如上代码,先定位元素,然后移动到元素,在元素基础上做偏移x,y 5,5然后点击。

需要注意的是最后的perform()。要加上这个。否则不生效。

2.通过js去点击元素。

可以通过dom去定位,或者jquery定位。然后点击操作。这里不具体说明了。可以找度娘。

3.可以分析代码,如果有直接调用函数的地方,可以通过js直接调用。

要说明的是,这个方法,一般不可行。因为js前端代码会压缩加密。所以上线后我们看到的是压缩的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python3.5多进程原理与用法实例分析

Python3.5多进程原理与用法实例分析

本文实例讲述了Python3.5多进程原理与用法。分享给大家供大家参考,具体如下: 进程类:Process 示例及代码: (1)创建函数作为单进程 #!/usr/bin/env...

pytorch 加载(.pth)格式的模型实例

pytorch 加载(.pth)格式的模型实例

有一些非常流行的网络如 resnet、squeezenet、densenet等在pytorch里面都有,包括网络结构和训练好的模型。 pytorch自带模型网址:https://pyto...

Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例

本文实例讲述了Python针对任意多的分隔符拆分字符串操作。分享给大家供大家参考,具体如下: 问题:将分隔符(以及分隔符之间的空格)不一致的字符串拆分为不同的字段; 解决方案:使用更为灵...

在Python编程过程中用单元测试法调试代码的介绍

对于程序开发新手来说,一个最常见的困惑是测试的主题。他们隐约觉得“单元测试”是很好的,而且他们也应该做单元测试。但他们却不懂这个词的真正含义。如果这听起来像是在说你,不要怕!在这篇文章中...

numpy返回array中元素的index方法

如下所示: import numpy a = numpy.array(([3,2,1],[2,5,7],[4,7,8])) itemindex = numpy.argwhere(a...