appium里的滑动和拖拽,滑动解锁,手机滑动接电话。

2023-05-16

1. 滑动和拖拽
我们在做自动化测试的时候,有些按钮是需要滑动几次屏幕后才会出现,此时,我们需要使用代码来模拟手指的滑动,也就是接下来要学的滑动和拖拽了。

1.1 swipe滑动事件
从一个坐标位置滑动到另一个坐标位置,只能是两个点之间的滑动。

方法:

driver.swipe(start_x, start_y, end_x, end_y, duration=None):参数分别是起点坐标的x,y和终点坐标的x,y,以及滑动时间,滑动事件的单位是ms。

实例1:

模拟手指从(100,2000),滑动到(100,1000)的位置。

driver.swipe(100, 2000, 100, 1000)

实例2:

模拟手指从(100, 2000),滑动到(100, 100)的位置。

driver.swipe(100, 2000, 100, 100)

实例3:

模拟手指从(100, 2000),滑动到(100, 100)的位置,持续5秒。

driver.swipe(100, 2000, 100, 100, 5000)

距离相同时,持续时间越长,惯性越小。

持续时间相同时,手指滑动的距离越大,实际滑动的距离也就越大。

1.2 scroll滚动事件
从一个元素滑动到另一个元素,直到页面自动停止。

方法:

driver.scroll(origin_el, destination_el):参数分别是滑动开始的元素和滑动结束的元素。

实例:

从“存储”滑动到“更多”。

save_button = driver.find_element_by_xpath("//*[@text='存储']")
more_button = driver.find_element_by_xpath("//*[@text='更多']")
driver.scroll(save_button, more_button)
#不能设置持续时间,惯性很大。

不能设置持续时间,惯性很大。

1.3 drag_and_drop拖拽事件
从一个元素滑动到另一个元素,第二个元素代替第一个元素原本屏幕上的位置。

方法:

driver.drag_and_drop(origin_el, destination_el):参数分别是滑动开始的元素和滑动结束的元素。

将“存储”拖拽到“更多”。

save_button = driver.find_element_by_xpath("//*[@text='存储']")
more_button = driver.find_element_by_xpath("//*[@text='更多']")
driver.drag_and_drop(save_button, more_button)
#不能设置持续时间,没有惯性

不能设置持续时间,没有惯性

1.4 滑动和拖拽的选择
滑动和拖拽无非就是考虑是否具有“惯性”,以及传递的参数是“元素”还是“坐标”。

可以分为四种情况:

有 “惯性” ,传入 “元素”:scroll。

无 “惯性” ,传入 “元素”:drag_and_drop。

有 “惯性” ,传入 “坐标”:swipe,并且设置较短的duration时间。

无 “惯性” ,传入 “坐标”:swipe,并且设置较长的duration时间。

1.5手指移动操作
模拟手机的滑动操作(滑动解锁)
方法:
move_to(el=None, x=None, y=None)这里的x,y为前一个坐标的偏移量
参数:
1.el:定位的元素
2.x:相对于前一个元素的x轴偏移量
3.y:相对于前一个元素的y轴偏移量

# 定位到存储
el = driver.find_element_by_xpath("//*[contains(@text,'存储')]")
# 定位到更多
el1 = driver.find_element_by_xpath("//*[contains(@text,'更多')]")
# 元素方式滑动
TouchAction(driver).press(el).move_to(el1).release().perform()
# 坐标的方式向上滑动
# TouchAction(driver).press(x=240,y=1000).move_to(x=0,y=-400).release().perform() 
# press().move_to() 实际使用的是TouchAction方法,需要给相对坐标.
# TouchAction(driver).press(x=240,y=600).wait(100).move_to(x=240,y=100).release().perform()
# press().wait().move_to()实际调用的是swip方法,会向下拉,感觉属于bug,可在log中查询swip,不建议这么用.

业务场景2:
1.进入设置
2.向上滑动屏幕到可见"安全"选项
3.进入到安全
4.点击屏幕锁定方式
5.点击图案
6.绘制图案


 # 定位到WLAN
        el1 = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
        # 定位到存储
        el2 = driver.find_element_by_xpath("//*[contains(@text,'存储')]")
        # 存储上滑到WLAN
        driver.drag_and_drop(el2,el1)
        # 定位到用户
        el3 = driver.find_element_by_xpath("//*[contains(@text,'用户')]")
        # 注意 这次使用drag_and_drop方法,传入的"存储定位"仍使用其原始在屏幕上的位置,所以是由存储滑动到用户才可以上滑,否则需要重新"定位存储"
        # 存储上滑倒用户位置
        driver.drag_and_drop(el2,el3)
        # 点击安全按钮
        driver.find_element_by_xpath("//*[contains(@text,'安全')]").click()
        # 点击屏幕锁定方式按钮
        driver.find_element_by_xpath("//*[contains(@text,'屏幕锁定')]").click()
        # 点击图案按钮
        driver.find_element_by_xpath("//*[contains(@text,'图案')]").click()
        # 绘制图案四个坐标 1:(244,967) 2:(723,967) 3:(723,1442) 4:(244,1916)
        TouchAction(driver).press(x=244,y=967).wait(100).move_to(x=479,y=0).wait(100)\
            .move_to(x=0,y=475).wait(100).move_to(x=-479,y=474).release().perform()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

appium里的滑动和拖拽,滑动解锁,手机滑动接电话。 的相关文章

随机推荐

  • JVM初探 -JVM内存模型

    JVM初探 JVM内存模型 标签 xff1a JVM JVM是每个Java开发每天都会接触到的东西 其相关知识也应该是每个人都要深入了解的 但接触了很多人发现 或了解片面或知识体系陈旧 因此最近抽时间研读了几本评价较高的JVM入门书籍 算是
  • Docker: USER 指定当前用户

    Docker USER 指定当前用户 格式 xff1a USER lt 用户名 gt USER 指令和 WORKDIR 相似 xff0c 都是改变环境状态并影响以后的层 WORKDIR 是改变工作目录 xff0c USER 则是改变之后层的
  • 岁月划过生命线(2016 年终总结 -季度之星)

    岁月划过生命线 2016 年终总结 季度之星 标签 xff1a coder 年假结束 明天就要回到杭州 回到我fighting的战场 回首过去的2016 放纵了许多 但也收获了很多 n个项目 n个框架 第一个季度之星 头像第一次登上CSDN
  • 备忘录模式

    备忘录模式 标签 xff1a Java与设计模式 备忘录模式 在不破坏封装性的前提下 捕获一个对象的内部状态 or 拷贝 并在该对象之外保存这个状态 这样以后就可 将该对象恢复到原先保存的状态 图片来源 设计模式 可复用面向对象软件的基础
  • 迭代器模式

    迭代器模式 标签 xff1a Java与设计模式 迭代器模式 提供一种方法顺序访问聚合对象 如List Set 内的每个元素 而又不暴露聚合对象的内部实现 图片来源 设计模式 可复用面向对象软件的基础 模式实现 Iterator amp A
  • 简洁的Java8

    简洁的Java8 Stream 标签 xff1a Java基础 再次回到阿里 感觉变化好大 一是服务资源Docker化 最牛逼的阿里DB团队竟然把DB放到了容器中 还放到了线上环境 二是全集团Java8 记得离开时还是1 6 1 5 甚至还
  • window远程桌面修改密码

    window远程桌面修改修改密码 windows服务器 xff0c 修改密码可以通过Ctrl 43 Alt 43 Del xff0c 调出修改密码的界面 xff0c 但是想要修改远程桌面连接windows服务器的密码 xff0c 通过Ctr
  • Expression #1 of ORDER BY clause is not in SELECT list,references column 'xxxxxxx'

    给数据库升了个级 xff0c 后台纷纷报错误 xff1a 报错信息 xff1a Expression 1 of ORDER BY clause is not in SELECT list references column 39 xxxx
  • Spring官网下载SpringFramework

    说明 太惨了 xff0c 我发现我的SpringFramework是5 1 1的 xff0c 然后我的JDK是1 7的 xff0c 好像是JDK版本太低所以不能使用 xff0c 所以我决定下载一个新的SpringFramework 刚好记录
  • windows驱动程序开发基础

    1 用户态驱动驱动程序和核心态驱动程序 下图描绘出了操作系统驱动程序的相关组成部分的概貌 xff1a Windows驱动程序既可以运行在用户态也可以运行在核心模态 l 用户态的驱动程序运行在非特权处理机模式 xff08 nonprivile
  • java语言如何求平方根

    package javaapplication1 64 author Administrator public class JavaApplication1 64 param args the command line arguments
  • Maven 3.5.2 导致 IDEA 下载依赖卡死失败

    Maven 3 5 2 导致 IDEA 下载依赖卡死失败 当 IDEA 使用 Maven 3 5 2 时 xff0c 新增依赖 xff0c 点击 Reload All Maven Projects xff0c 总是卡在 finished 上
  • ubuntu16.04如何正确安装python3.6.5?

    目录 1 下载python3 6 5源码 2 编译python3 6 5源码 3 创建新安装的python3链接 4 检查python3 6 5是否可以用终端输入 前言 安装环境 xff1a ubuntu16 04 64位 xff0c py
  • 总结几点 Wake On Lan (WOL) 失败的原因

    正文 在我想使用 Wake On Lan xff08 后文皆用 WOL 代替 xff09 这项技术远程开机时 xff0c 总是失败 xff0c 在查阅各种资料后成功使用上了 WOL xff0c 下面总结几点导致失败的原因 发送 Magic
  • ubuntu18.04开机进入命令行模式

    ubuntu18 04开机进入命令行模式 设置开机进入命令行模式 1 首先我们修改grub文件sudo vim etc default grub 用 注释掉GRUB CMDLINE LINUX DEFAULT 61 quiet xff0c
  • 十几次CATIA安装重装系统吐血问题总结

    十几次CATIA安装重装系统吐血问题总结 一 CATIA许可证问题 破解文件未放置在相应位置 xff1b 安装时未关闭杀毒软件 二 CATIA热键未启动 xff0c 点击确定退出 查找杀毒软件恢复区 xff0c 检查是否杀毒软件限制了CAT
  • shell里面if条件语句使用正则判断

    下面介绍的是shell脚本里面 xff0c if语句中的正则表达式语句结构 要想判断变量最后一位是否为数字可用 34 0 9 34 这个表达式 xff0c 在 里面不要双引号
  • 如果在linux上明明服务已经启动,外部浏览器还是访问不到页面要注意以下问题。

    一 防火墙的状态 有时打开防火墙外部不能访问 防火墙的命令 xff1a 查看防火墙状态 systemctl status firewalld 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl s
  • appium中常见的几种点击方式

    首先从appium库里面导入webdriver xff0c 然后webdriver Remote 声明driver对象 想要使用TouchAction xff0c 必须要创建TouchAction对象 xff0c 通过对象调用想要执行的手势
  • appium里的滑动和拖拽,滑动解锁,手机滑动接电话。

    1 滑动和拖拽 我们在做自动化测试的时候 xff0c 有些按钮是需要滑动几次屏幕后才会出现 xff0c 此时 xff0c 我们需要使用代码来模拟手指的滑动 xff0c 也就是接下来要学的滑动和拖拽了 1 1 swipe滑动事件 从一个坐标位