1. 滑动和拖拽
我们在做自动化测试的时候,有些按钮是需要滑动几次屏幕后才会出现,此时,我们需要使用代码来模拟手指的滑动,也就是接下来要学的滑动和拖拽了。
1.1 swipe滑动事件
从一个坐标位置滑动到另一个坐标位置,只能是两个点之间的滑动。
方法:
driver.swipe(start_x, start_y, end_x, end_y, duration=None):参数分别是起点坐标的x,y和终点坐标的x,y,以及滑动时间,滑动事件的单位是ms。
实例1:
模拟手指从(100,2000),滑动到(100,1000)的位置。
driver.swipe(100, 2000, 100, 1000)
实例2:
模拟手指从(100, 2000),滑动到(100, 100)的位置。
driver.swipe(100, 2000, 100, 100)
实例3:
模拟手指从(100, 2000),滑动到(100, 100)的位置,持续5秒。
driver.swipe(100, 2000, 100, 100, 5000)
距离相同时,持续时间越长,惯性越小。
持续时间相同时,手指滑动的距离越大,实际滑动的距离也就越大。
1.2 scroll滚动事件
从一个元素滑动到另一个元素,直到页面自动停止。
方法:
driver.scroll(origin_el, destination_el):参数分别是滑动开始的元素和滑动结束的元素。
实例:
从“存储”滑动到“更多”。
save_button = driver.find_element_by_xpath("//*[@text='存储']")
more_button = driver.find_element_by_xpath("//*[@text='更多']")
driver.scroll(save_button, more_button)
不能设置持续时间,惯性很大。
1.3 drag_and_drop拖拽事件
从一个元素滑动到另一个元素,第二个元素代替第一个元素原本屏幕上的位置。
方法:
driver.drag_and_drop(origin_el, destination_el):参数分别是滑动开始的元素和滑动结束的元素。
将“存储”拖拽到“更多”。
save_button = driver.find_element_by_xpath("//*[@text='存储']")
more_button = driver.find_element_by_xpath("//*[@text='更多']")
driver.drag_and_drop(save_button, more_button)
不能设置持续时间,没有惯性
1.4 滑动和拖拽的选择
滑动和拖拽无非就是考虑是否具有“惯性”,以及传递的参数是“元素”还是“坐标”。
可以分为四种情况:
有 “惯性” ,传入 “元素”:scroll。
无 “惯性” ,传入 “元素”:drag_and_drop。
有 “惯性” ,传入 “坐标”:swipe,并且设置较短的duration时间。
无 “惯性” ,传入 “坐标”:swipe,并且设置较长的duration时间。
1.5手指移动操作
模拟手机的滑动操作(滑动解锁)
方法:
move_to(el=None, x=None, y=None)这里的x,y为前一个坐标的偏移量
参数:
1.el:定位的元素
2.x:相对于前一个元素的x轴偏移量
3.y:相对于前一个元素的y轴偏移量
el = driver.find_element_by_xpath("//*[contains(@text,'存储')]")
el1 = driver.find_element_by_xpath("//*[contains(@text,'更多')]")
TouchAction(driver).press(el).move_to(el1).release().perform()
业务场景2:
1.进入设置
2.向上滑动屏幕到可见"安全"选项
3.进入到安全
4.点击屏幕锁定方式
5.点击图案
6.绘制图案
el1 = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
el2 = driver.find_element_by_xpath("//*[contains(@text,'存储')]")
driver.drag_and_drop(el2,el1)
el3 = driver.find_element_by_xpath("//*[contains(@text,'用户')]")
driver.drag_and_drop(el2,el3)
driver.find_element_by_xpath("//*[contains(@text,'安全')]").click()
driver.find_element_by_xpath("//*[contains(@text,'屏幕锁定')]").click()
driver.find_element_by_xpath("//*[contains(@text,'图案')]").click()
TouchAction(driver).press(x=244,y=967).wait(100).move_to(x=479,y=0).wait(100)\
.move_to(x=0,y=475).wait(100).move_to(x=-479,y=474).release().perform()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)