App自动化测试笔记(六):App手势操作

滑动和拖拽事件

swipe滑动事件

概念:从一个坐标的位置滑动到另一个坐标的位置

方法:从一个坐标的位置滑动到另一个坐标的位置,只能是两个点之间的滑动
参数:
start_x : 起点x轴坐标
start_y : 起点y轴坐标
end_x : 终点x轴坐标
end_y : 终点y轴坐标
duration : 滑动这个操作一共持续的时间长度,单位:ms

driver.swipe(start_x,start_y,end_x,end_y,duration = None)

小结:
距离相同时,持续时间越长,惯性越小
持续时间相同时,手指滑动的距离越大,试及滑动的距离也就越大

代码:

# swipe滑动事件
# driver.swipe(100,2000,100,1000)
# driver.swipe(100,2000,100,100)
driver.swipe(100,2000,100,100,500)

scroll和drag_and_drop滑动事件

概念:
从一个元素滑动到另一个元素,直到页面自动停止
 
方法:
参数:
origin_el:滑动开始的元素
destination_el:滑动结束的元素
有惯性
driver.scroll(origin_el,destination_el)
特点:
参数是元素
没有持续时间,有惯性

无惯性

driver.drag_and_drop(origin_el,destination_el)


特点:
参数是元素
没有持续时间,无惯性

代码:
 

from appium import webdriver
import time
from selenium.webdriver.support.wait import WebDriverWait
 
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 封装查找元素方法
def move_ele(eles):
    return WebDriverWait(driver,5,poll_frequency=0.5).until(lambda x:x.find_element_by_xpath(eles))
# 起始元素
ele1 = move_ele("//*[@text = '电池']")
# 结束元素
ele2 = move_ele("//*[@text = 'WLAN']")
# scroll托拽元素
# driver.scroll(ele1,ele2)
# drag_and_drop托拽元素
driver.drag_and_drop(ele1,ele2)
time.sleep(3)
driver.quit()

总结:
滑动和拖拽无非就是考虑是否有 “惯性” ,以及传递的参数是 “元素” 还是 “坐标”。
可以分成以下四种情况
1、有 “惯性” ,传入 “元素”- scroll
2、无 “惯性” ,传入 “元素” - drag_and_drop
3、有 “惯性” ,传入 “坐标” - swipe,并且设置较短的 duration 时间
4、无 “惯性” ,传入 “坐标” - swipe,并且设置较长的 duration 时间


高级手势TouchAction

概念和作用:
高级手势,可以将小的动作组合成一系列复杂的动作

使用步骤
1、创建TouchAction对象
2、通过对象调用想执行的手势
3、通过perform()执行动作

手指轻敲操作

模拟手指对元素或坐标的轻敲操作
参数:
element:元素
x:x坐标
y:y坐标
count:点击次数,默认为1

TouchAction(driver).tap(element = None,x = None,y = None,count = 1).perform()
手指按下和抬起操作

模拟手指对元素或坐标的按下操作
参数:
el:元素
x:x坐标
y:y坐标

TouchAction(driver).press(el = None , x = None , y = None).perform()

模拟手指对元素或坐标抬起操作

TouchAction(driver).release().perform()
等待操作

模拟手指暂定操作
参数:
ms:暂停的毫秒数

TouchAction(driver).wait(ms = 0).perform()
长按操作

模拟手指对元素或坐标的长按操作
参数:
el:元素
x:x坐标
y:y坐标
duration:长按时间,毫秒

TouchAction(driver).long_press(el = None , x = None , y = None , duration = 1000).perform()

代码:

from appium import webdriver
import time
from appium.webdriver.common.touch_action import TouchAction
 
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# # 轻敲手势
ele = driver.find_element_by_xpath("//*[@text = 'WLAN']")
# TouchAction(driver).tap(ele).perform()
# 手指按下、抬起、等待操作
TouchAction(driver).press(ele).release().perform()
time.sleep(2)
# TouchAction(driver).press(x = 650,y = 650).wait(2000).release().perform()
# 长按操作
TouchAction(driver).long_press(x = 650 , y= 650).perform()
 
time.sleep(3)
driver.quit()

移动操作

模拟手指对元素或坐标的移动操作
参数:
el:元素
x:x坐标
y:y坐标

TouchAction(driver).move_to(el=None, x=None, y=None).perform()

代码:

from appium import webdriver
import time
 
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.support.wait import WebDriverWait
 
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.ChooseLockPattern'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
 
# 手势移动操作
(TouchAction(driver).press(x=246, y=857).move_to(x=721, y=867).move_to(x=1200,
y=851).move_to(x=1200, y=1329).move_to(x=724, y=1329).move_to(x=246, y=1329).move_to(x=718,
y=1815).release().perform())
ele = driver.find_elements_by_xpath("//*[@text = '继续']")
TouchAction(driver).tap(ele).perform()
time.sleep(3)
driver.quit()

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值