• 多测师拱墅校区肖sir_高级金牌讲师_app定位元素(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)
  • 相关阅读:
    Java内存模型之从JMM角度分析DCL
    MySQL系列(九)--InnoDB索引原理
    MySQL系列(一)--基础知识(转载)
    MySQL系列(八)--数据库分库分表
    MySQL系列(七)--SQL优化的步骤
    MySQL系列(六)--索引优化
    MySQL系列(五)--二进制日志对主从复制的影响
    Java集合(七)--基于jdk1.8的HashMap源码
    Java数据结构和算法(八)--红黑树与2-3树
    Java数据结构和算法(七)--AVL树
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/16413726.html
Copyright © 2020-2023  润新知