需求背景:appium做手机自动化的时候,有个很固定的需求就是竖直滑动刷新页面信息(比如:微信朋友圈、微博等),开始的时候我是固定写死的,如driver.swipe(300, 1000, 300, 300),但是这样写的弊端也很明显,代码不够健壮,如果遇到小屏设备或者大屏设备,滑动的幅度看起来就可能过大或过小。所以我们需要根据不同分辨率的设备做自适应,使代码在各种大小的屏幕上表现的行为和体验都比较一致。
首先,我们需要获取屏幕的宽和高,Appium(python)可用get_window_size()方法获取屏幕的宽和高(可用键值索引单独获取宽或高),然后按照屏幕尺寸定义滑动幅度占屏比。因为下滑刷新是比较常用的功能,所以我封装为一个函数,方便调用,代码如下:
def scroll_down(self):
width = self.get_window_size()['width']
height = self.get_window_size()['height']
x = width / 2
starty = height * 0.75
endy = height * 0.20
self.swipe(x, starty, x, endy, 500)
调用方式为scroll_down(driver),传入自己的Appium WebDriver对象即可;
下滑幅度(通过修改示例代码中的0.75和0.20来实现)和滑动时间也可以根据自己的需求修改,如果要让该函数更加通用和健壮,也可以将这些定制化的参数提取到函数的入参。