Appium高级手势操作
滑动操作
scroll事件
概念
从一个元素滑动到另外一个元素,直到页面自动停止,模拟人滑动一下的操作。必须要求两个元素都在界面上可见,否则会报错。
-
orgin_el:滑动开始的元素
-
destination_el:滑动结束的元素
-
duration:滑动持续的时间,默认是600ms,时间越大滑动越慢
driver.scroll(orgin_el, destination_el, duration=600)
driver = webdriver.Remote('http://localhost:4723/wd/hub', settings_dict)
end = driver.find_element('xpath', '//*[@text="蓝牙"]')
start = driver.find_element('xpath', '//*[@text="电池"]')
driver.scroll(start, end, duration=5000)
从电池元素那里开始滑动到蓝牙位置结束
scroll滑动的准确性不高
drag_and_drop事件
概念
从一个元素滑动到另一个元素,第二个元素替代第一个元素在原本屏幕上的位置。也是两个元素必须在界面上可见,否则报错。
-
orgin'_el:滑动开始的元素
-
destination_el:滑动结束的元素
driver.drag_and_drop(orgin_el, destination_el)
drag_and_drop不能设置持续时间,但滑动效果比scroll更加精确,几乎没有惯性。
基于位置坐标的滑动
概念
从一个坐标点滑动到界面的另一个坐标点,通常用于开屏动画滑动、多图片连续滑动等。
driver.swipe(x1, y1, x2, y2, duration)
-
x1, y1:第一个点的x和y坐标
-
x2, y2:第二个点的x和y坐标
-
duration:持续时间,事件越长,滑动的越慢
driver.swipe(140, 800, 140, 100, duration=500)
TouchAction
-
轻敲手势
-
长按手势
-
手指移动操作
TouchAction可以实现针对手势的操作,比如滑动、长按、拖动等,我们可以将这些基本手势组合成一个相对复杂的手势,比如解锁手机或者一些应用软件都有手势解锁的功能。
使用步骤:
-
创建TouchAction对象
-
通过对象调用想执行的手势
-
通过perform方法执行动作(所有手势必须通过perform方法来触发)
轻敲手势
ta = TouchAction(driver)
ta.tap(x=121, y=340).perform()
可以使用坐标点击元素,也可以使用find_element获取到元素传入
长按手势
按住press/长按long_press操作
-
el:要长按的元素
-
x:长按的x坐标
-
y:长按的y坐标(坐标和元素对象两种方式二选一)
-
duration:长按时间
TouchAction(driver).long_press(el=None, x=None, y=None, duration=1000).perform()
driver = webdriver.Remote('http://localhost:4723/wd/hub', settings_dict)
ta = TouchAction(driver)
ta.press(x=89, y=337).perform()
ta.move_to(x=268, y=337).perform()
ta.move_to(x=443, y=337).perform()
ta.move_to(x=268, y=520).perform()
ta.move_to(x=89, y=701).release().perform() # release松开手