定位不到元素时候,一定很头大,最近一直在跑自动化流程,经常因为各种原因定位不到元素,经过数十次的尝试,我发现尤其是H5页面,出现定位不到元素的可能性更大,也总结尝试发现了在H5里面,通过切换上下文后用坐标点点击真的非常好用普通的元素定位方法:对于原生,可以通过id,text来找元素,自己写路径,对于H5 webview页面,则可以通过copy xpath找元素,直接获取xpath路径,比如下图示例选中我要选的元素,比如我这里想定位标题,直接右键点击,copy, copy xpath即可完成元素xpath路径的提取接下来验证我们复制的xpath路径,在console控制台下,输入$x('复制的xpath路径粘贴到这里'),可以很明显看到标题内容被我们提取到

原生安卓app和公众号H5界面,对于大部分的元素是可以获取的,但是总会有那么些奇葩的元素,你怎么获取都获取不到,尤其是H5页面里的元素,可能各种因素比如JS没加载无法获取元素,那么基于这些特殊情况,分享一个万能的坐标点点击方法,如下图,我红框部位是鼠标悬停的位置,坐标是(965,1916),我们假如想点击该位置,则可以通过该坐标,进行坐标点点击,目前我用坐标点击,不管是原生,还是H5,百试不爽,非常好用

方法:tap方法,即可

driver.tap([(x,y)])

但这个方法不完善,这个坐标是以我的手机分辨率为基准的坐标,如果换了一台手机分辨率不一致,那么坐标就会变,可能点不到我们想点的位置,我这里写了一个通用的方法,前提是不同设备的分辨率不一致,但是宽高比例一致,比如我这里x1和y1是我测试时候的坐标,手机分辨率是1080*1920,计算出横纵坐标在整个手机的比例rate_x,rate_y,如果换了一台设备,则获取设备的尺寸get_size(),然后分别乘以刚才的比率即可得出新的坐标点

rate_x = x1/1080rate_y = y1/1920size_x,size_y = self.get_size()x = size_x * rate_xy = size_y * rate_yprint(x,y)self.driver.tap([(x,y)])

注意事项,原生和H5相互切换要切换上下文,坐标点点击场景为安卓原生,要切换到NATIVE_APP,如果涉及H5和原生相互切换,一定要注意上下文的切换,不然程序跑不起来

driver.switch_to.context("上下文名称")

原生APP的上下文:NATIVE_APP公众号H5的上下文:WEBVIEW_com.tencent.mm:tools

python爬虫人工智能大数据公众号

xpath定位元素方法_测试数十次,总结了APP元素定位的万能方法相关推荐

  1. c# 定位内存快速增长_改善C#程序,提高程序运行效率的50种方法

    转自:http://blog.sina.com.cn/s/blog_6f7a7fb501017p8a.html 一.用属性代替可访问的字段 1..NET数据绑定只支持数据绑定,使用属性可以获得数据绑定 ...

  2. rssi室内定位算法原理_一种基于RSSI测距的室内定位方法与流程

    本发明涉及室内定位领域,尤其涉及一种基于RSSI测距的室内定位方法. 背景技术: : 室内无线定位,是指利用无线网络和定位终端提供待测节点位置.速度和方向等相关信息的服务.对于一个定位算法而言,评价其 ...

  3. javastring转long的方法_被JDK坑的没商量?来试试这些方法吧

    前言 jdk作为我们每天必备的调用类库,里面大量提供了基础类供我们使用.可以说离开jdk,我们的java代码寸步难行,jdk带给我们的便利可谓是不胜枚举,但同时这些方法在使用起来也存在一些坑,如果不注 ...

  4. 暴露的全局方法_面试刷题36:线程池的原理和使用方法?

    线程池原理和使用在面试中被高频问到,比如阿里的面试题.下面我们针对问题来进行回答. 为什么要使用线程池? 线程池的使用场景有2: 1, 高并发场景:比如tomcat的处理机制,内置了线程池处理http ...

  5. tp3.2 不能提交到action方法_什么是死锁,如何避免死锁(4种方法)

    当两个线程相互等待对方释放资源时,就会发生死锁.Python 解释器没有监测,也不会主动采取措施来处理死锁情况,所以在进行多线程编程时应该采取措施避免出现死锁. 一旦出现死锁,整个程序既不会发生任何异 ...

  6. java定义一个eat方法_小黄鸭系列java基础知识 | java中的方法

    前言 今天我们要探讨的问题,是java基础语法的最后一个问题,也就是java中的方法,今天主要从以下几个方面来介绍: 方法是什么(定义) 方法的分类 方法的调用 应该说,学完今天的知识,你至少应该看懂 ...

  7. python列表内元素求和_在Python中将列表的每个元素与另一个列表的每个元素相乘/相加/相除的有效方法...

    我想将一个列表的每个元素与另一个列表的每个元素相乘. lst1 = [1, 2, 1, 2] lst2 = [2, 2, 2] lst3 = [] for item in lst1: for i in ...

  8. chrome浏览器打开网页默认全屏的方法_测试成功

    chrome浏览器打开网页默认全屏的方法 1.在桌面上右键创建快捷方式 2.在地址栏中输入: "C:\Program Files (x86)\Google\Chrome\Applicatio ...

  9. sharedpreferences使用方法_细数 SharedPreferences 的那些槽点 !

    前言 最近在处理一个历史遗留项目的时候饱受其害,主要表现为偶发性的 SharedPreferences 配置文件数据错乱,甚至丢失.经过排查发现是多进程的问题.项目中有两个不同进程,且会频繁的读写 S ...

最新文章

  1. emqx配置mysql认证_emqx使用mysql完成用户密码验证和ACL鉴权-Go语言中文社区
  2. python join字符连接函数的使用方法
  3. C#机器学习插件 ---- AForge.NET
  4. 盈建科弹性板6计算_硅酸钙板的安装技巧和选购技巧
  5. jeecg扩展字段,非实体属性
  6. SAP链接外部数据库的实现方法
  7. Struts2的struts.xml的配置细节
  8. 设计模式学习——代理模式(Proxy Pattern)
  9. mysql java 代码生成器_java代码生成器
  10. RabbitMQ (一)第一个hello world
  11. abb变频器dp适配器说明书_PROFIBUS-DP与ABB变频器之间通讯设置步骤
  12. 移动web前端开发注意事项
  13. github首次使用提交项目
  14. EKL-日志收集系统安装
  15. openCV绘制简单Sierpinski(分形)图形
  16. 医疗行业容灾备份解决方案
  17. 放大后字体变形的一点思考
  18. 线程有哪些状态?创建、就绪、运行、阻塞和死亡
  19. 【转】UAP studio基础使用技巧
  20. redis数据结构hash

热门文章

  1. 1925亿美元,中国仍是世界最大芯片市场!2022全球半导体行业报告出炉
  2. 北大校友“炼丹”分享:OpenAI如何训练千亿级模型?
  3. 什么,PyTorch还能开发新药?哈佛推出这款工具包,10行代码训练“药神”模型...
  4. 公司又有人被开除了,这次真的是...
  5. 开平方的 7 种算法
  6. ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`meiduo`.`
  7. python日志输出到屏幕,python日志写入文件
  8. python 循环(while、for、break、continue、循环嵌套、while...else、for...else)
  9. MATLAB_no.3:关于车牌的.
  10. 线扫相机——机器视觉中无限制物体的检测