dcsxlh

导航

 

app屏幕滑动定位(swipe方法)
 一、swipe语法

swipe语法:

格式:Swipe(int start x,int start y,int end x,int y,time)#参数的个数根据实际情况使用
解释:
 int start x-开始滑动的x坐标,
   int start y -开始滑动的y坐标。
   int end x -结束点x坐标,
   int end y -结束点y坐标。
   time 滑动时间(默认5毫秒)
给swipe指定坐标,因为每个手机的屏幕分辨率不一样,指定一个固定的坐标,并不是适用所有手机,所以这里可以通过获取手机屏幕坐标实现,提升代码重用。

python-appium手机自动测试如何实现滑动呢,在webdriver 的api中只提供了指定两个坐标的滑动,但不同的手机分辨率不同,这样写出来的自动化脚本兼容性就不是那么好了。。那么怎么实现滑动呢,仔细看了下webdriber中的方法,发现有个方法get_window_size() ,这个方法可以获得手机的宽度和高度,这样我们就可以实现按屏幕比率滑动了。

具体方法如下:

dx=d.get_window_size()   #获取屏幕的高度和宽度
print(dx)


首先我们给定固定三个参数:0.5  0.25  0.75,(参数合理就好)因为不管向上向下还是向左向右滑,他们的参数都在由大到小变化或者由小到大的变化

理解下下面的图:
1、屏幕的坐标图,向上滑动屏幕就是x轴不变,y轴由大到小的变化过程:
2、屏幕的坐标图,向下滑动屏幕就是x轴不变,y轴由小到大的变化过程
3、屏幕的坐标图,向左滑动屏幕就是y轴不变,x轴由大到小的变化过程
4、屏幕的坐标图,向右滑动屏幕就是y轴不变,x轴由小到大的变化过程

 

 

 

图的理解:当前屏幕的参数跟着当前滑动屏幕的参数走,在屏幕滑动时在屏幕上下选个参考物做讲解
案例:

from appium  import   webdriver
from time import *
cs={
'platformName':'Android',#平台系统: Android or los
'deviceName':'OPPO R11',#设备名称SM-G9350
'platformVersion':'android-4.4W', #平台版本
'appPackage':'com.baidu.yuedu',#包名
'appActivity':'com.baidu.yuedu.splash.SplashActivity', #activity
'unicodeKeyboard': True, #使用unicode编码方式发送字符串
}
d=webdriver.Remote('http://127.0.0.1:4723/wd/hub',cs)
sleep(10)
d.find_element_by_id('com.baidu.yuedu:id/righttitle').click() #点击图书
sleep(4)
dx=d.get_window_size()
print(dx)
x=dx.get('width')*0.9 #x最大值
x1=dx.get('width')*0.1 #x最小值
y=dx.get('height')*0.9 #y最大值
y1=dx.get('height')*0.1 #y最小值
zjx=dx.get('width')*0.5
zjy=dx.get('height')*0.5
#左滑
d.swipe(x,y,x1,y,duration=1000)
sleep(5)
d.swipe(x,y,x1,y,duration=1000)
sleep(5)
#向上滑
d.swipe(x,y,x,y1,duration=1000)
sleep(5)
d.swipe(x,y,x,y1,duration=1000)
sleep(5)
d.swipe(x,y,x,y1,duration=1000)
sleep(5)
# 向下滑
d.swipe(zjx,y1,zjx,y,duration=1000)
sleep(5)
d.swipe(zjx,y1,zjx,y,duration=1000)
sleep(5)
d.swipe(zjx,y1,zjx,y,duration=1000)
# 右滑
sleep(5)
d.swipe(x1,zjy,x,zjy,duration=1000)
sleep(5)
d.swipe(x1,zjy,x,zjy,duration=1000)
sleep(5)
============================================
案例2:
aa文件
from appium  import   webdriver
from gs2_sql.bb import *
from time import *
cs={
'platformName':'Android',#平台系统: Android or los
'deviceName':'OPPO R11',#设备名称SM-G9350
'platformVersion':'android-4.4W', #平台版本
'appPackage':'com.baidu.yuedu',#包名
'appActivity':'com.baidu.yuedu.splash.SplashActivity', #activity
'unicodeKeyboard': True, #使用unicode编码方式发送字符串
}
d=webdriver.Remote('http://127.0.0.1:4723/wd/hub',cs)
sleep(10)
d.find_element_by_id('com.baidu.yuedu:id/righttitle').click() #点击图书
sleep(4)
z(d,2)
s(d,1)
x(d,1)
y(d,1)

bb文件:
from  time import  *
#左滑
def z(d,t=1):
for i in range(t):
dx = d.get_window_size()
x = dx.get('width') * 0.9 # x最大值
x1 = dx.get('width') * 0.1 # x最小值
y = dx.get('height') * 0.5 #
d.swipe(x,y,x1,y,duration=1000)
sleep(3)
#右滑
def y(d,t=1):
for i in range(t):
dx = d.get_window_size()
x = dx.get('width') * 0.9 # x最大值
x1 = dx.get('width') * 0.1 # x最小值
y = dx.get('height') * 0.5 #
d.swipe(x1,y,x,y,duration=1000)
sleep(3)
#上滑
def s(d,t=1):
for i in range(t):
dx = d.get_window_size()
x = dx.get('width') * 0.5 # x最大值
y = dx.get('height') * 0.1 # x最小值
y1 = dx.get('height') * 0.9 #
d.swipe(x,y1,x,y,duration=1000)
sleep(4)

#向下滑
def x(d,t=1):
for i in range(t):
dx = d.get_window_size()
x = dx.get('width') * 0.5 # x最大值
y = dx.get('height') * 0.1 # x最小值
y1 = dx.get('height') * 0.9 #
d.swipe(x,y,x,y1,duration=1000)
sleep(3)

 注意:修改下边距的数据

如下:

from  time import  *
#左滑
def z(d,t=1):
for i in range(t):
dx = d.get_window_size()
x = dx.get('width') * 0.9 # x最大值
x1 = dx.get('width') * 0.1 # x最小值
y = dx.get('height') * 0.5 #
d.swipe(x,y,x1,y,duration=1000)
sleep(3)
#右滑
def y(d,t=1):
for i in range(t):
dx = d.get_window_size()
x = dx.get('width') * 0.9 # x最大值
x1 = dx.get('width') * 0.1 # x最小值
y = dx.get('height') * 0.5 #
d.swipe(x1,y,x,y,duration=1000)
sleep(3)
#上滑
def s(d,t=1):
for i in range(t):
dx = d.get_window_size()
x = dx.get('width') * 0.5 # x最大值
y = dx.get('height') * 0.1 # x最小值
y1 = dx.get('height') * 0.9 #
d.swipe(x,y1,x,y,duration=1000)
sleep(4)

#向下滑
def x(d,t=1):
for i in range(t):
dx = d.get_window_size()
x = dx.get('width') * 0.5 # x最大值
y = dx.get('height') * 0.25 # x最小值
y1 = dx.get('height') * 0.75#
d.swipe(x,y,x,y1,duration=1000)
sleep(4)
posted on 2022-06-26 16:17  多测师_肖sir  阅读(138)  评论(0编辑  收藏  举报