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 相关文章推荐
使用Python3中的gettext模块翻译Python源码以支持多语言
Mar 31 Python
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
Python命令启动Web服务器实例详解
Feb 23 Python
python读取txt文件,去掉空格计算每行长度的方法
Dec 20 Python
Django 实现前端图片压缩功能的方法
Aug 07 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
pytorch中的自定义数据处理详解
Jan 06 Python
使用python计算三角形的斜边例子
Apr 15 Python
Python使用shutil模块实现文件拷贝
Jul 31 Python
python开根号实例讲解
Aug 30 Python
python输入中文的实例方法
Sep 14 Python
Python-OpenCV教程之图像的位运算详解
Jun 21 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
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
jquery uaMatch源代码
2011/02/14 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
Python编程入门的一些基本知识
2015/05/13 Python
在Apache服务器上同时运行多个Django程序的方法
2015/07/22 Python
python爬取网易云音乐评论
2018/11/16 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
外科实习自我鉴定
2013/10/06 职场文书
后勤自我鉴定
2013/10/13 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
茶花女读书笔记
2015/06/29 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL