APP Tech · 2022年12月8号 0

android 根据bounds坐标进行点击操作_【APP测试】自动化测试常见问题3:通过坐标点击的对象切换屏幕后如何自适应

APP在自动化测试的时候,通常会遇到这样一个问题:就是通过坐标点击的对象切换屏幕后就适应不了了,还得重新定位、找坐标!下面小编带你看一下如何解决这个问题:
1.前提

基于win10专业版64位系统+jdk1.8+python3+pycharm+android SDK+appium+unittest。
2.痛点

通常大家在做APP自动化测试定位元素的时候大都是通过元素的各种属性来完成定位操作的,但有时会出现一种情况,比如下方第一幅截图的权限授权窗口就不能直接通过属性来定位“Allow”按钮并单击,不是因为它没有可用的属性比如resource id,其实是有的,因为它是系统级别的弹窗,需要切换窗口才能操作,但有些通过切换窗口也无法定位操作时怎么办呢?简单,同过定位对应元素的中心点坐标,单击坐标即可实现响应的选择操作。紧接着新的问题又来了,如果切换了手机屏幕,点同样的坐标还能保证正常操作吗?
3.解决方案

1)空间中心点坐标计算方法

6dc79c41f70351887a00ccfef9d32373.png

通过元素定位工具获取该按钮的bounds属性:

[500,636][640,732]分别表示[x1,y1][x2,y2]

控件中心点坐标:

w=(x2+x1)/2 =570

h=(y2+y1)/2 =684

2)中心点坐标相较当前屏幕的系数

当前屏幕尺寸:

x = driver.get_window_size()[‘width’]

y = driver.get_window_size()[‘height’]

假设如下值:

x=768

y=1184

从而得到按钮的中心点左右相较于当前屏幕的一个坐标系数:

x0=570/768=0.742

y0=684/1184=0.578

3)切换任意屏幕点击坐标思路

先获取新屏幕的宽和高:

x = driver.get_window_size()[‘width’]

y = driver.get_window_size()[‘height’]

最后点击针对新屏幕的中心点坐标:

driver.tap([(0.742*x,0.578*y)])