1,通过绝对坐标定位(不推荐)
在手机(或模拟器)的开发者选项里打开指针位置,任意点的绝对坐标都能获取到,如下A点的坐标为(542, 1362)
2,通过相对坐标定位(推荐)
更换不同分辨的测试机后,之前获取的手机某个位置点的绝对坐标就会改变,这样每次更换测试机都需要更改坐标,显然是不方便代码的维护,所以就需要获取相对坐标。
2.1,获取相对坐标的思路:
1,选择任意一台测试手机(或模拟器)
2,获取需要定位的点的绝对坐标(x1, y1)
3,获取当前测试机屏幕的宽度(w1)、高度(h1)
4,获取该点横坐标与屏幕宽的比(x1/w1),纵坐标与屏幕高的比(y1/h1)
5,更换测试机后,获取新的测试机屏幕的宽(w2),高(h2)
6,计算新测试机上该点横坐标x2=w2 * (x1/w1),纵坐标y2 = h2 * (y1/h1)
2.2,点击A点代码如下:
点击绝对坐标
# 点击绝对坐标时的代码,测试机屏幕宽1080,高2340 driver.tap(542, 1362)
点击相对坐标
# 重新封装点击A点相对坐标的方法 def tapA(driver): # 比例系数 x = 542/1080 y = 1362/2340 # 获取新测试机屏幕宽、高 w = driver.get_window_size()['width'] h = driver.get_window_size()['height'] # 屏幕宽高乘以A点的比例系数,即可得A点在新测试机上坐标 driver.tap(x*w, y*h)
需要注意:
1,webdriver中提供坐标点击方法tap(),而元素点击方法则是click();
2,区别于TouchAction类中的tap()方法,不需要构造TouchAction对象,driver对象调用即可。