Appium中scroll和drag_and_drop根据元素位置滑动
作者:测试之路king 发布时间:2023-03-16 23:34:38
背景
我们在操作APP应用时,有些需要从一个元素滑动到另外一个元素时,这时候我们无法确定坐标,所以swipe 根据坐标滑动方式就无法使用了,如下图:从 课堂直播 上滑到 直播公开课 位置
这时候我们就需要使用其他滑动方式,我们想到可以根据元素进行滑动,Appium 里面根据元素来进行滑动的方式主要方法为 scroll 和 drag_and_drop
scroll 介绍
说明
从一个元素滚动到另一个元素,只能是两个元素之间的滑动。
方法详情
def scroll(self: T, origin_el: WebElement, destination_el: WebElement, duration: Optional[int] = None) -> T:
"""Scrolls from one element to another
Args:
origin_el: the element from which to being scrolling
destination_el: the element to scroll to
duration: a duration after pressing originalEl and move the element to destinationEl.
Default is 600 ms for W3C spec. Zero for MJSONWP.
Usage:
driver.scroll(el1, el2)
Returns:
Union['WebDriver', 'ActionHelpers']: Self instance
"""
# XCUITest x W3C spec has no duration by default in server side
if self.w3c and duration is None:
duration = 600
action = TouchAction(self)
if duration is None:
action.press(origin_el).move_to(destination_el).release().perform()
else:
action.press(origin_el).wait(duration).move_to(destination_el).release().perform()
return self
参数:
origin_el - 要滚动的起始元素
destination_el - 要滚动到的结束元素
duration - 持续时间,单位毫秒,默认为 600 ms
操作场景
进入网易云首页
从课堂直播滑动到直播公开课位置
关键代码实现
# 定位到课堂直播元素
el1 = driver.find_element(AppiumBy.XPATH, "//*[@text='课堂直播']").click()
# 定位到直播公开课元素
el2 = driver.find_element(AppiumBy.XPATH, "//*[@text='直播公开课']").click()
# 执⾏滑动操作
driver.scroll(el1,el2)
说明
操作过程有 惯性,需要添加duration参数,参数值越大,惯性越小。
drag_and_drop 介绍
说明
从一个元素滑动到另一个元素,第二个元素代替第一个元素原本屏幕上的位置。
方法详情
def drag_and_drop(self: T, origin_el: WebElement, destination_el: WebElement) -> T:
"""Drag the origin element to the destination element
Args:
origin_el: the element to drag
destination_el: the element to drag to
Returns:
Union['WebDriver', 'ActionHelpers']: Self instance
"""
action = TouchAction(self)
action.long_press(origin_el).move_to(destination_el).release().perform()
return self
参数:
origin_el - 要滑动页面的起始元素
destination_el - 要滑动页面到结束元素
操作场景
进入网易云首页
从课堂直播滑动到直播公开课位置
关键代码实现
# 定位到课堂直播元素
el1 = driver.find_element(AppiumBy.XPATH, "//*[@text='课堂直播']").click()
# 定位到直播公开课元素
el2 = driver.find_element(AppiumBy.XPATH, "//*[@text='直播公开课']").click()
# 执⾏滑动操作
driver.drag_and_drop(el1,el2)
说明
不能设置持续时间,没有惯性
滑动和拖拽使用场景选择
滑动和拖拽无非就是考虑是否具有“惯性”,以及传递的参数是“元素”还是“坐标”。
scroll:有 “惯性” ,传入 “元素”,可以通过设置duration参数来进行控制惯性大小
drag_and_drop:无 “惯性” ,传入 “元素”
swipe:有 “惯性” ,传入 “坐标”,可以通过设置duration参数来进行控制惯性大小
说明: 添加duration参数,参数值越大,惯性越小
来源:https://ceshizhilu.blog.csdn.net/article/details/122889631


猜你喜欢
- 本文实例为大家分享了asp.net存储和读取数据库图片的具体代码,供大家参考,具体内容如下1. 创建asp.net web窗体项目代码如下:
- php判断正常访问和外部访问 <?php session_start(); if(isset($_POST['check
- 对于爬虫中部分网站设置了请求次数过多后会封杀ip,现在模拟浏览器进行爬虫,也就是说让服务器认识到访问他的是真正的浏览器而不是机器操作简单的直
- Java与mongodb的连接1. 连单台mongodbMongo mg = new Mongo();//默认连本机127.0.0.1 端口
- 今天使用ab(apacheBench)测试了一下beego的性能。3Kbytes动态文件,在i3上可以达到每秒1W次响应的性能。但是在测试静
- Go 程序的性能优化及 pprof 的使用程序的性能优化无非就是对程序占用资源的优化。对于服务器而言,最重要的两项资源莫过于 CPU 和内存
- Python中的魔法方法方法名说明__str__用于返回对象的描述__iter__使类可以迭代__getitem__按照下标获取类元素,例如
- 本文所示代码实现python编程方向键控制图片上下左右,我们首先看下演示结果。演示:实例代码:bif="1.jpg" m
- 工资excel表格格式如下所示:使用python批量给每位员工发送工资条信息,格式如下:思路:首先是加载excel,获取当前sheet表格s
- 这个项目的名称与其叫做万能的XML不如叫做自动构建网站,根据一份XML文件,生成对应目录结构的网站,不过只有html还是太过于简单了,如果要
- wed的打印方法具我自己懂得知道的有: 1、JQuery插件Jqprint实现 2、JQery打印插件PrintArea实现网页打印 3、C
- 目录背景什么是协程?什么是 gevent?协程的例子Q&AQ:gevent 无法捕获的耗时A:猴子补丁实践异步 requests 请
- 目录Logging模块的使用简单使用指定日志输出样式日志记录到文件中自定义日志配置准备日志配置信息准备日志配置信息加载日志配置信息使用日志配
- 当我们在使用php开发的时候,基本不需要关心热更新这件事的,因为PHP本身已经帮我处理好了,只需要提交代码,PHP重新解释一遍即可。而go则
- dict是python中的常用数据结构,应该尽量掌握其使用方法字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>
- 本文目的是由浅入深地介绍python装饰器原理装饰器(Decorators)是 Python 的一个重要部分其功能是,在不修改原函数(类)定
- 安装配置MongoDB驱动安装驱动go get -u github.com/mongodb/mongo-go-driver初始化模块go m
- 1、什么是水仙花数?水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digit
- 图像融合按照一定的比例将两张图片融合在一起addWeighted()方法:参数1第一张图片矩阵参数2第一张图片矩阵的权重参数3第二张图片矩阵
- 一. 10句话1.不要依赖register_global=ON的环境,从你刚懂得配置php运行环境甚至尚不明白register_global