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


Posted in Python onJune 12, 2019

在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 相关文章推荐
总结Python中逻辑运算符的使用
May 13 Python
使用Python解析JSON数据的基本方法
Oct 15 Python
浅析Python中signal包的使用
Nov 13 Python
python中urllib.unquote乱码的原因与解决方法
Apr 24 Python
微信跳一跳python代码实现
Jan 05 Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 Python
Python实现账号密码输错三次即锁定功能简单示例
Mar 29 Python
python把转列表为集合的方法
Jun 28 Python
Anaconda和ipython环境适配的实现
Apr 22 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 Python
通过实例简单了解python yield使用方法
Aug 06 Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 #Python
python3.4 将16进制转成字符串的实例
Jun 12 #Python
python binascii 进制转换实例
Jun 12 #Python
Python3 实现串口两进程同时读写
Jun 12 #Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 #Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 #Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 #Python
You might like
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
jQuery数据缓存用法分析
2015/02/20 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
Python使用django搭建web开发环境
2017/06/09 Python
浅谈Python NLP入门教程
2017/12/25 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
python 判断网络连通的实现方法
2018/04/22 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
Python 程序员必须掌握的日志记录
2020/08/17 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
一套C#面试题
2013/10/09 面试题
几个Linux面试题笔试题
2016/08/01 面试题
艺术系应届生的自我评价
2013/10/19 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
财会专业大学生求职信
2014/09/26 职场文书
预备党员思想汇报1000字
2014/10/07 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
2016年教师新年寄语
2015/08/18 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python