App自动化滑动和拖拽事件

swipe滑动
#从一个坐标滑动到另一个坐标:(x1,y1)→(x2,y2),只能是两点间的移动
driver.swipe(start_x=x1,start_y=y1,end_x=x2,end_y=y2,duration=1000)
#duration是滑动操作持续时间,单位是毫秒
#滑动距离越长,展示的效果越靠后
#距离相同时,持续时间越长,惯性越小

scroll滑动
#从一个元素滑动到另一个元素,直到页面自动停止
driver.scroll(origin_el,destination_el)
#origin_el:开始元素,destination_el:结束元素
#能设置持续时间,惯性很大

drag_and_drop拖拽事件
#从一个元素滑动到另一个元素,第二个元素替代第一个元素原本屏幕上的位置
driver.drag_and_drop(origin_el,destination_el)
#不能设置持续时间,没有惯性

滑动和拖拽事件的选择
有惯性,传入元素
scroll
无惯性,传入元素
drag_and_drop
有惯性,传入坐标
swipe,设置较短的duration时间
无惯性,传入坐标
swipe,设置较长的duration时间

学习链接:https://www.bilibili.com/video/BV1B441197rZ

实现App自动化滑块拖动验证码的过程主要涉及模拟用户操作,例如触摸、滑动等行为。以下是一个通用的思路示例代码(基于 `Appium` 自动化测试框架): ### 实现思路 1. 定位滑块元素的位置。 2. 模拟手指按下并拖动滑块到目标位置。 3. 释放手指完成验证。 ### 示例代码(Python + Appium) ```python from appium import webdriver from selenium.webdriver.common.by import By import time # 配置Appium参数 desired_caps = { "platformName": "Android", "deviceName": "emulator-5554", "appPackage": "com.example.app", # 替换为你的App包名 "appActivity": ".MainActivity", # 替换为你的App启动页 "automationName": "UiAutomator2" } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 等待页面加载 time.sleep(5) # 定位滑块控件(根据实际情况替换资源ID或XPath) slider = driver.find_element(By.ID, "com.example.app:id/slider") # 获取滑块的位置大小 location = slider.location size = slider.size # 计算滑动起点终点坐标 start_x = location['x'] + size['width'] * 0.1 # 起点略偏右 start_y = location['y'] + size['height'] / 2 end_x = location['x'] + size['width'] * 0.9 # 终点更靠右 end_y = start_y # 模拟滑动操作 driver.swipe(start_x, start_y, end_x, end_y, duration=500) # 滑动时间设为500ms # 等待验证结果 time.sleep(3) # 关闭驱动 driver.quit() ``` ### 注意事项 1. **滑块验证码**通常会检测滑动轨迹是否自然,因此可能需要进一步优化滑动路径(如加入随机偏移、变速效果)。 2. 如果滑块是Webview组件,则需要切换上下文到Webview再进行定位。 3. 如果使用iOS设备,请调整配置中的 `platformName` 相关元素定位方式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值