我们在操作APP过程中,经常会遇到屏幕滑动,如看微信朋友圈时,经常会遇到向下、向上的滑动;浏览图片时遇到向左、向右滑动;登录过程中遇到九宫格的滑动等等。那么在自动化测试过程中,滑动是怎么操作的呢?appium的Webdriver提供了swipe的方法来实现滑动。
格式:swipe(self,start_x, start_y,end_x,end_y,duration)
解释 :
start_x-开始滑动的x坐标;
start_y -开始滑动的y坐标 ;
end_x -结束点x坐标;
end_y -结束点y坐标;
duration 滑动时间(默认5毫秒)。
屏幕左上角为起点,坐标为(0,0),起点往右为X轴,起点以下为Y轴
一.向左滑动
实例操作: 如下图所示,从B点向A点滑动,滑动时间为1秒。
分析: 首先要获取手机屏幕的Width和Height。而通过下图可以看出,B点滑动到A点,只是X轴变动了,而Y轴没有变动。B点和A点的Y轴相当于屏幕的正中间。那么x1=x0.9 x2=x0.1,y1=y2=y*0.5
代码示例:
from appium import webdriver
from time import sleep
desired_caps={
'platformName':'Android',
'platformVersion':'6.0.1',
'deviceName':'127.0.0.1:21305',
'appPackage':'com.baidu.homework',
'appActivity':'com.baidu.homework.activity.index.IndexActivity',
'automationName':'Appium',
'noReset':False
}
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
#获取屏幕size
size = driver.get_window_size()
print(size)
#屏幕的宽度 width
x=size['width']
#屏幕的高度 height
y=size['height']
def swipe_left():
"""
向左滑动
"""
x1=x*0.9
y1=y*0.5
x2=x*0.1
t=1000
n=1#n表示滑动次数
sleep(1)
for i in range(n):
driver.swipe(x1,y1,x2,y1,t)
二.向右滑动
实例操作: 如下图所示,从B点向A点滑动,滑动时间为1秒,滑动两次。
分析: 首先要获取手机屏幕的Width和Height。而通过下图可以看出,B点滑动到A点,就是从手机屏幕左边中点位置向右滑动,即X轴变动了,而Y轴在中点没有变动。那么x1=x0.1 x2=x0.9,y1=y2=y*0.5
代码示例:
from appium import webdriver
from time import sleep
desired_caps={
'platformName':'Android',
'platformVersion':'6.0.1',
'deviceName':'127.0.0.1:21305',
'appPackage':'com.baidu.homework',
'appActivity':'com.baidu.homework.activity.index.IndexActivity',
'automationName':'Appium',
'noReset':False
}
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
#获取屏幕size
size = driver.get_window_size()
print(size)
#屏幕的宽度 width
x=size['width']
#屏幕的高度 height
y=size['height']
def swipe_right():
"""
向右滑动
"""
x1=x*0.1
y1=y*0.5
x2=x*0.9
t=1000
n=2#n表示滑动次数
sleep(1)
for i in range(n):
driver.swipe(x1,y1,x2,y1,t)
三.向下滑动
实例操作: 如下图所示,从B点向A点滑动,滑动时间为1秒,滑动三次。
分析: 首先要获取手机屏幕的Width和Height。而通过下图可以看出,B点滑动到A点,就是从手机屏幕最上边向下滑动,即Y轴一直在变红,而X轴在中点没有变动。那么x1=x2=x0.5, y1=x0.1,y2=y*0.9
代码示例:
from appium import webdriver
from time import sleep
desired_caps={
'platformName':'Android',
'platformVersion':'6.0.1',
'deviceName':'127.0.0.1:21305',
'appPackage':'com.baidu.homework',
'appActivity':'com.baidu.homework.activity.index.IndexActivity',
'automationName':'Appium',
'noReset':False
}
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
#获取屏幕size
size = driver.get_window_size()
print(size)
#屏幕的宽度 width
x=size['width']
#屏幕的高度 height
y=size['height']
def swipe_down():
"""
向下滑动
"""
x1=x*0.5
y1=y*0.1
y2=y*0.9
t=1000
n=3#n表示滑动次数
sleep(1)
for i in range(n):
driver.swipe(x1,y1,x1,y2,t)
四.向上滑动
实例操作: 如下图所示,从B点向A点滑动,滑动时间为10秒,滑动两次。
分析: 首先要获取手机屏幕的Width和Height。而通过下图可以看出,B点滑动到A点,就是从手机屏幕最下边向上滑动,即Y轴一直在变化,而X轴在中点没有变动。那么x1=x2=x0.5, y1=y0.9,y2=y*0.1
代码示例:
from appium import webdriver
from time import sleep
desired_caps={
'platformName':'Android',
'platformVersion':'6.0.1',
'deviceName':'127.0.0.1:21305',
'appPackage':'com.baidu.homework',
'appActivity':'com.baidu.homework.activity.index.IndexActivity',
'automationName':'Appium',
'noReset':False
}
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
#获取屏幕size
size = driver.get_window_size()
print(size)
#屏幕的宽度 width
x=size['width']
#屏幕的高度 height
y=size['height']
def swipe_up():
"""
向上滑动
"""
x1=x*0.5
y1=y*0.9
y2=x*0.1
t=10000
n=2#n表示滑动次数
sleep(1)
for i in range(n):
driver.swipe(x1,y1,x1,y2,t)