- 自动化环境:
xcode:7.3
设备:iphone6s
脚本语言:Python
在写自动化测试脚本时,通过appium inspector定位元素时,有时会遇到一个页面中使用的是整个table view,而属于table view里面的控件就无法被识别到,相应的就无法进行对控件的操作。这个时候可以通过tap方法去模拟用户的点击操作
- tap方法简介:
tap(self, positions, duration=None):
Taps on an particular place with up to five fingers, holding for a certain time
模拟手指点击(最多五个手指),可设置按住时间长度(毫秒)
:Args:
- positions - an array of tuples representing the x/y coordinates of
the fingers to tap. Length can be up to five.
- duration - (optional) length of time to tap, in ms
:Usage:
driver.tap([(100, 20), (100, 60), (100, 100)], 500)
用法 driver.tap([(x,y),(x1,y1)],500)
使用这个方法有有个问题,对当前编写的设备适用,对其他不同分辨率的机型就不再适用,所以需要进行相应的修改:
1.只要单击操作
2.模拟坐标点击可适配所有机型
- 重新封装后的方法:
def target_click(self,x1,y1): #x1,y1为你编写脚本时适用设备的实际坐标
wd = self.wd
x_1=x1/375 #计算坐标在横坐标上的比例,其中375为iphone6s的宽
y_1=y1/667 #计算坐标在纵坐标667为iphone6s的高
x = wd.get_window_size()['width'] #获取设备的屏幕宽度
y = wd.get_window_size()['height'] #获取设备屏幕的高度
print x_1*x,y_1*y #打印出点击的坐标点
wd.tap([(x_1*x, y_1*y)], 500) #模拟单手点击操作
这样理论上只要知道屏幕上的具体坐标就都可以实现用户的点击操作,坐标的获取可通过appium inspector工具中的Precise Tap,通过点击需要获取坐标的位置去获取:
- 例子
public.target_click(self,15.6,42.6) #返回上一级,注意坐标输入坐标时需要将小数点带入