使用 App 的时候,我们经常会用到左右上下滑动。
比如向上滑动,查看更多内容;向下滑动刷新;左右滑动翻页等。
这里就需要用到屏幕滑动功能 swipe() 方法。
swipe() 实现从 A 点到 B 点的滑动,也就是需要确定两个坐标点。
swipe(start_x, start_y, end_x, end_y, duration=None)
swipe() 方法的参数如下:
- start_x:起始点的x轴坐标;
- start_y:起始点的y轴坐标;
- end_x:结束点的x轴坐标;
- end_y:结束点的y轴坐标;
- duration:滑动的延迟时间,在滑动前会稍作等待,也就是实现缓慢的滑动,默认值为None,可以设置具体的时间,单位为毫秒。
注意,向上滑动的时候,延迟时间会影响刷新的数量,缓慢滑动只会更新大致一屏的数据,而快速滑动就可能翻很多屏的数据。使用时可以尝试一下。
比如想实现向上滑动,查看屏幕下方的更多内容。此时 x 轴不变, y 轴从大变小。(以现在常见的分辨率1080 * 1920
为例)
driver.swipe(500, 1800, 500, 200, 300)
从坐标 (500, 1800) 滑动到 (500, 200) 的位置,也就是从最下面屏幕中间的位置滑动到屏幕顶部,实现向下翻页。
当然直接指定坐标点,如果分辨率变化,那么将会滑动失败。我们可以通过driver.get_window_size()
方法获取屏幕的分辨率,然后使用百分比的方式来实现滑动。
# 从右往左滑动,相当于向左翻页
start_x = int(size['width'] * 0.9)
start_y = int(size['height'] * 0.5)
end_x = int(size['width'] * 0.1)
end_y = start_y # 左右滑动,y 不变
driver.swipe(start_x, start_y, end_x, end_y)
# 从左往右滑动,相当于向左翻页
start_x = int(size['width'] * 0.1)
start_y = int(size['height'] * 0.5)
end_x = int(size['width'] * 0.9)
end_y = start_y
driver.swipe(start_x, start_y, end_x, end_y)
# 从下往上滑动,相当于向上翻页
start_x = int(size['width'] * 0.5)
start_y = int(size['height'] * 0.8)
end_x = start_x
end_y = int(size['height'] * 0.2)
driver.swipe(start_x, start_y, end_x, end_y)
# 从下往上滑动,相当于向上翻页
start_x = int(size['width'] * 0.5)
start_y = int(size['height'] * 0.2)
end_x = start_x
end_y = int(size['height'] * 0.8)
driver.swipe(start_x, start_y, end_x, end_y)
尝试:
可以试试把滑动封装成一个函数,传入'u','d','l','r',分别实现上下左右滑动。swipe('r') # 向右滑动,实现向左边翻页