百人计划

Appium自动化使用坐标定位元素

2018-04-11  本文已影响15人  葛木瓜

1. 缘 由

为什么要用坐标定位元素呢?原因很简单,uiautomatorviewer无法定位该元素!

2. 场 景

目前我遇到无法定位的两种情况:

3. 实 现

对于以上两种无法定位元素的情况,可以考虑用坐标定位

# x1/y1和 x2/y2分别为起/止点的坐标,time为时间,单位为ms
driver.swipe(x1, y1, x2, y2, time)
'''
Usage:
      driver.swipe(120, 200, 120, 200, 50)
      定位坐标为(120, 200)的元素,并点击
'''
# 模拟手指点击(最多五个手指),time为时间,单位为ms
driver.tap([(x1, y1), (x2, y2)], time)
'''
Usage:
      driver.tap([120, 200], 10)
      定位坐标为(120, 200)的元素,并点击
'''

4. 问 题

以上两种坐标定位都使用元素的绝对坐标,如更换模拟器分辨率,元素坐标也会随之改变,此时就需要将当前分辨率下的绝对坐标转换为相对坐标,方法如下:

# 获取当前分辨率
el_x = driver.get_window_size()['width']
el_y = driver.get_window_size()['height']

# 绝对坐标转换为相对坐标,假设当前分辨率为720x1280,绝对坐标为(120, 200)
xd_x = (120/720)*el_x
xd_y = (200/1280)*el_y
>> (xd_x, xd_y)  # 相对坐标

5.参 考

上一篇 下一篇

猜你喜欢

热点阅读