appium-滑动、拖动操作

appium滑动、拖动操作

要实现在手机中滑动、拖动操作,首先需要定位到的坐标,或者使用元素实现滑动、拖动

可以使用绝对坐标和相对坐标

由于绝对坐标在更换手机或改变分辨率大小后不能重复利用,推荐使用相对坐标

首先获得屏幕width、height

screen_size = driver.get_window_size()#返回一个当前屏幕宽高的字典
width = screen_size['width']
height = screeen_size['height']

1.使用点的坐标实现滑动、拖动

  • 使用绝对坐标(可以使用appium也可以使用模拟器获得坐标)

在这里插入图片描述

起点:x1=123,y1=222
终点:x2=345,y2=555
#使用绝对坐标
driver.swipe(x1,y1,x2,y2,1000)	#单手指从起点直线滑动到终点,时间为1000ms

#使用相对坐标(推荐)
x1=width*0.8
y1=height*0.2
x2=width*0.5
y2=height*0.7
driver.swipe(x1,y1,x2,y2,800)

2.使用元素定位实现滑动、拖动

e1 = driver.find_element_by_id('xxx')
e2 = driver.find_element_by_id('xxx')
driver.scroll(e1,e2,600)	#从e1元素位置移动到e2元素

3.使用TouchAction类实现鼠标点击、拖动等操作

from appium.webdriver.common.multi_action import MultiAction
from appium.webdriver.common.touch_action import TouchAction

screen_size = driver.get_window_size()
width = screen_size['width']
height = screen_size['height']
x1 = width*0.7
y1 = height*0.6
# 单一动作执行
action1 = TouchAction(driver)
action1.press(x=x1, y=y1).wait(400).release().perform()#点击(x1,y1)并抬起#perform()表示执行动作,没有加perform()动作不会被执行

#多个动作一起执行
action2 = TouchAction(driver)
mul_ac = MultiAction(driver)
mul_ac.add(action1, action2)
mul_ac.perform() #同时执行action1、action2,
#此时执行完后mul_ac里面的动作会被清空,
#想要再次执行动作需要先往里面添加(add)动作之后再执行(perform)

注意:

如果滑动、点击等无效,可以尝试更换配置:
将uiautomator在uiautomator1和uiautomator2之间换着使用

在这里插入图片描述
在这里插入图片描述