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之间换着使用