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

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

5373d6762e574b0d99185229dca4ce69.png

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

e4623fd857272579fa75192420b93a92.png

方法:tap方法,即可

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

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

rate_x = x1/1080
rate_y = y1/1920
size_x,size_y = self.get_size()
x = size_x * rate_x
y = size_y * rate_y
print(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爬虫人工智能大数据公众号

39c0f7bcbefd4ac1c2841170c369b19d.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值