Appium自动化下拉刷新

news/2024/11/25 9:39:22/

使用Appium作app自动化测试,绕不开的就是下拉刷新操作,下拉是最常见的,其实还有上滑、左滑、右滑操作。在正式的测试流程里,可以把刷新操作封装成一个模块,需要时直接调用。

Appium中提供了三种滑动的方式:swipe滑动scroll滑动drag拖拽事件

swipe()方法是从⼀个坐标位置滑动到另⼀个坐标位置,是两个点之间的滑动。

def swipe(self, start_x, start_y, end_x, end_y, duration=None):"""Swipe from one point to another point, for an optional duration.:Args:- start_x - x-coordinate at which to start- start_y - y-coordinate at which to start- end_x - x-coordinate at which to stop- end_y - y-coordinate at which to stop- duration - (optional) time to take the swipe, in ms.:Usage:driver.swipe(100, 100, 100, 400)"""# `swipe` is something like press-wait-move_to-release, which the server# will translate into the correct actionaction = TouchAction(self)action \.press(x=start_x, y=start_y) \.wait(ms=duration) \.move_to(x=end_x, y=end_y) \.release()action.perform()return self
  • start_x - 滑动开始x轴坐标
  • start_y - 滑动开始y轴坐标
  • end_x - 滑动结束x轴偏移量
  • end_y - 滑动结束y轴偏移量
  • duration - (可选) 执行此次滑动时间,单位毫秒

其中end_x 和 end_y 为基于start_x 和start_y 的偏移量;最终在执行中的 to_x = start_x +end_x 并非end_x ;duration 参数单位为ms(默认5毫秒),注意 1s = 1000ms。

封装刷新模块

便于随时调用,我们可以自行封装代码,将上滑、下滑、左滑、右滑封装成一个刷新模块。

#coding=utf-8
import timeclass Slide(object):def __init__(self, driver):self.driver = driver#获取机器屏幕大小x,ydef get_size(self):x = self.driver.get_window_size()['width']y = self.driver.get_window_size()['height']return x, y#屏幕向上滑动def swipe_up(self, t): # t是指滑动时间(默认5毫秒,可选参数)"""滑动时X轴不变,Y轴由大到小"""screensize = self.get_size()x1 = int(screensize[0] * 0.5) # x坐标y1 = int(screensize[1] * 0.75) # 起始y坐标y2 = int(screensize[1] * 0.25) # 终点y坐标self.driver.swipe(x1, y1, x1, y2, t)#屏幕向下滑动def swipe_down(self, t):"""滑动时X轴不变,Y轴由小到大"""screensize = self.get_size()x1 = int(screensize[0] * 0.5) # x坐标y1 = int(screensize[1] * 0.25) # 起始y坐标y2 = int(screensize[1] * 0.75) # 终点y坐标self.driver.swipe(x1, y1, x1, y2, t)#屏幕向左滑动def swipe_left(self, n, t): # n是指滑动次数"""滑动时Y轴不变,X轴由大到小"""screensize = self.get_size()x1 = int(screensize[0] * 0.9)y1 = int(screensize[1] * 0.5)x2 = int(screensize[0] * 0.1)for i in range(0, n): # for循环,控制滑动次数time.sleep(3)self.driver.swipe(x1, y1, x2, y1, t)#屏幕向右滑动def swipe_right(self, n, t):"""滑动时Y轴不变,X轴由小到大"""screensize = self.get_size()x1 = int(screensize[0] * 0.1)y1 = int(screensize[1] * 0.5)x2 = int(screensize[0] * 0.9)for i in range(0, n): # for循环,控制滑动次数time.sleep(3)self.driver.swipe(x1, y1, x2, y1, t)

假设刷新模块的文件名为app_slide 那么可以这样调用

from app_slide import Slide#调用时传递appium.webdriver
flush = Slide(driver)#下拉刷新
flush.swipe_down(1000)

http://www.ppmy.cn/news/507333.html

相关文章

自动化测试--16Selenium基本用法-鼠标键盘操作、下拉框操作

1.鼠标操作 由selenium的ActionChains类来完成模拟鼠标操作 主要操作流程: 1.存储鼠标操作 2.perform()来执行鼠标操作 支持的操作如下: double_click 双击操作 context_click 右键操作 drag_and_drop 拖拽操作。左键按住拖动某一个元素到另一个区域,然后释放按键 move_to_…

解决鼠标滚动时页面上下跳动的问题

解决鼠标滚动时页面上下跳动的问题 前言 鼠标用的时间长了,用中间滚轮滚动页面时会出现上下窜动的情况,这一般都是滚轮编码器内有污物导致的。 一、拆开鼠标 1、准备一把螺丝刀和镊子。取下鼠标的电池。鼠标一般都有一个固定螺丝,在下盖上…

web自动化测试理论之浏览器操作 -(3)

浏览器操作 设置浏览器显示范围: 1、窗口最大化 dirver.maxmize_window() 2、设置窗口大小 dirver.set_window_size(width, height) 3、设置窗口位置 dirver.set_window_position(x, y) 浏览器显示页面操作: 1、页面后退操作 dirver.back() 2、…

web自动化学习-鼠标操作及下拉框

鼠标操作 鼠标操作:Action.Chains 分为 操作执行 操作包括但不限于如下几种: 悬浮:move_to_element单击:click双击:double_click点击并按住:click_and_hold 释放 relese拖拽:drag_and_drop执…

java实现鼠标指针匀速下滑,当鼠标移到自动填充柄上,鼠标指针变为( )。

【单选题】完全垄断厂商达于长期均衡的条件是 【单选题】Tant pis ! Tu as fait ______ de fautes que moi dans la dicte. ( ) 【单选题】公式“int(rand()*10)”产生的值不可能是( )。 【判断题】多步骤大量大批生产一般不需要在完工产品与在产品间分配费用。 【多选题】下列…

mysql errno 32 mysqldump: Got errno 32 on write 解决办法

当遇到mysqldump: Got errno 32 on write错误时可以尝试以下详细的解决方案: 检查磁盘空间:使用命令df -h或者df -i检查磁盘使用情况。确保输出文件所在的目录或分区有足够的可用空间。 检查文件路径和权限:使用命令ls -l检查输出文件所在目…

Vue 虚拟滚动

虚拟滚动(Virtual Scrolling)是一种优化大型列表渲染性能的技术,在Vue中也有对应的实现方式。虚拟滚动可以提高大量数据列表的性能和响应速度,减少页面的渲染开销。 在Vue中实现虚拟滚动的一种常见方式是使用第三方库&#xff0c…

001506

马上得到Python答案