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多线程(python多线程简明教程)
Jun 09 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
python正则中最短匹配实现代码
Jan 16 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
使用python读取.text文件特定行的数据方法
Jan 28 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
python求质数列表的例子
Nov 24 Python
Flask中endpoint的理解(小结)
Dec 11 Python
简单的Python人脸识别系统
Jul 14 Python
Python3合并两个有序数组代码实例
Aug 11 Python
细说NumPy数组的四种乘法的使用
Dec 18 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
PHP XML备份Mysql数据库
2009/05/27 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
js DOM的学习笔记
2011/12/22 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
js的三种继承方式详解
2017/01/21 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
关于layui 下拉列表的change事件详解
2019/09/20 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
python在控制台输出进度条的方法
2015/06/20 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
python分布式编程实现过程解析
2019/11/08 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
python如何判断IP地址合法性
2020/04/05 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
VC++笔试题
2014/10/13 面试题
体育专业个人的求职信范文
2013/09/21 职场文书
数控专业应届生求职信
2013/11/27 职场文书
社区文艺活动方案
2014/08/19 职场文书
优秀教研组申报材料
2014/12/26 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android