appium python 用xpath和tap模拟点击

有的时候会出现clickable=false不能点击,以及一些其他不能用click()的情况。此时如果没有resource_id和text,我想到了一种方式也可以模拟点击,虽然目前用到这种方式的情况并不多,但是记录下来万一以后会用到。
总的来说就是利用xpath+tap

1、用xpath定位到元素
element = driver.find_element_by_xpath(xpath) #这里的xpath要换成元素的xpath信息
2、用.size和.location方法获取元素的大小和坐标

至于为什么不用bounds,是因为想使方法更灵活,在连接另一个分辨率的手机的时候也能适配。

elem_size = element.size
elem_location = element.location

print出来elem_size和elem_location是这样的:
{‘width’: 285, ‘height’: 76}
{‘y’: 233.0, ‘x’: 28.0}

3、将size和location的数据处理成bounds

这里将第2步中elem_size和elem_location的数据处理成bound的类型,这样做是因为可以提供个tap方法做参数,脚本如下:

#根据size和location定位,返回tap中的参数
def coordinate(size, location):
    _x_ = size.get('width')
    _y_ = size.get('height')
    x1 = location.get('x')
    y1 = location.get('y')
    x2 = x1 + _x_
    y2 = y1 + _y_
    return [(x1, y1), (x2, y2)]
4、最后调用tap方法模拟点击
bounds = coordinate(mesg.size, mesg.location)
driver.tap(bounds, 100)
全部的脚本示例:
#用xpath和tap模拟点击

def coordinate(size, location):
    _x_ = size.get('width')
    _y_ = size.get('height')
    x1 = location.get('x')
    y1 = location.get('y')
    x2 = x1 + _x_
    y2 = y1 + _y_
    return [(x1, y1), (x2, y2)]
    
element = driver.find_element_by_xpath(xpath) #这里的xpath要换成元素的xpath信息
elem_size = element.size
elem_location = element.location
bounds = coordinate(elem_size, elem_location)
driver.tap(bounds, 100)
发布了10 篇原创文章 · 获赞 2 · 访问量 2139
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览