dcsxlh

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

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   多测师_肖sir  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
 
点击右上角即可分享
微信分享提示