• 肖sir__高级讲师___讲解app屏幕滑动定位(swipe方法)整理



    app屏幕滑动定位(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() ,这个方法可以获得手机的宽度和高度,这样我们就可以实现按屏幕比率滑动了。。具体方法如下:
    首先我们给定固定三个参数:0.5  0.25  0.75,(参数合理就好)因为不管向上向下还是向左向右滑,他们的参数都在由大到小变化或者由小到大的变化

    理解下下面的图:
    1、屏幕的坐标图,向上滑动屏幕就是x轴不变,y轴由大到小的变化过程:图来解释,这个时候屏幕坐标肯定是比原来屏幕1,3坐标小,因为屏幕在往上滑
    2、屏幕的坐标图,向下滑动屏幕就是x轴不变,y轴由小到大的变化过程
    3、屏幕的坐标图,向左滑动屏幕就是y轴不变,x轴由大到小的变化过程
    4、屏幕的坐标图,向右滑动屏幕就是y轴不变,x轴由小到大的变化过程

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


    源码如下:
    #defgetSize():获取机器屏幕大小
    #defswipeup(t):屏幕向上滑动,x1为x轴坐标,y1起始的y轴坐标,y2结束的y轴坐标
    # x1 =int(l[0] *0.5):l是上面函数中返回的屏幕大小,0和1其实是索引位,0代表x值,1代表y的值
    defgetSize():
    x = driver.get_window_size()['width']
    y = driver.get_window_size()['height']
    return(x, y)
    ----------------------------------------------------------------------

    上滑操作就是从屏幕的下端点击一个坐标然后往上滑动,x坐标可以不变。Y的开始和结束坐标改进即可。

    ----------------------------------------------------------------------
    #屏幕向上滑动(代码里把注释去掉)
    defswipeup(t):
    l = getSize()
    x1 =int(l[0] *0.5)
    y1 =int(l[1] *0.75)
    y2 =int(l[1] *0.25)
    driver.swipe(x1, y1, x1, y2, t)
    sleep(6)
    swipeup(1000)
    ---------------------------------------------------------------------

    下滑就是从屏幕的上端点击一个坐标然后往下滑动到另外一个坐标,x坐标可以不变。Y的开始和结束坐标改变即可。

    ---------------------------------------------------------------------
    #屏幕向下滑动
    defswipedown(t):
    l = getSize()
    x1 =int(l[0] *0.5)
    y1 =int(l[1] *0.25)
    y2 =int(l[1] *0.75)
    driver.swipe(x2, y1, x1, y1, t)
    sleep(6)
    swipedown(1000)

    -----------------------------------------------------------

    左滑就是从屏幕的右端点击一个坐标点往左滑动到另外一个坐标点。Y坐标可以不改变。X的开始和结束坐标改变即可。

    -----------------------------------------------------------
    #屏幕向左滑动
    def swipLeft(t):
        l=getSize()
        x1=int(l[0]*0.75)
        y1=int(l[1]*0.5)
        x2=int(l[0]*0.25)
        driver.swipe(x1,y1,x2,y1,t)

    ------------------------------------------------------------------------------

    下滑就是从屏幕的上端点击一个坐标然后往下滑动到另外一个坐标,x坐标可以不变。Y的开始和结束坐标改变即可。

    -----------------------------------------------------------------------------

    幕向右滑动
    def swipRight(t):
        l=getSize()
        x1=int(l[0]*0.25)
        y1=int(l[1]*0.5)
        x2=int(l[0]*0.75)
        driver.swipe(x2,y1,x1,y1,t)
    =============================================================

    app自动化测时,经常会用到查找元素、定位元素、发送数据、长按、点

    击、上滑、下滑、左滑、右滑等操作。

    我们要用手机滑动,我们用代码实现,所以是我们学习的目标,

    下面讲下用appium自带的swipe方法怎么实现上滑、下滑、左滑、右滑。

    一、swipe()

    通过传递坐标信息即可完成滑动

    为了通用,可以使用其他机型的手机,利用百分比的方式操作

    一.            打开uiautomator来熟悉X、Y坐标的概念

     每个元素都有开始和结束坐标。(也就是这个元素在屏幕中个位置)

    右边的显示区域最后一个元素的开始坐标为[60,535],结束坐标为 [659,582]      #比如【取消】按钮

    我们要滑动屏幕,也就是点击一个坐标然后滑动到另外一个坐标,做了这样的操作后,屏幕就会相应的滑动。

    =================================================================================

    先获取屏幕的大小,每款手机尺寸不一,所以通过get_window_size函数获取尺寸。

    # 获取整个屏幕的宽和高
    size = driver.get_window_size()
    print(size) # 打印结果{'width': 720, 'height': 1280}

    上滑操作就是从屏幕的下端点击一个坐标然后往上滑动,x坐标可以不变。Y的开始和结束坐标改进即可。

    ==============================================================================

    Swipe(int start x,int start y,int end x,int y,duration)

    解释:int start x-开始滑动的x坐标,

      int start y -开始滑动的y坐标。

       int end x -结束点x坐标,

       int end y -结束点y坐标。

       duration 滑动时间(默认5毫秒);

    参考图:

     ===================================================

    案例演示(1):百度阅读(图书)向右滑动两次

    from appium import webdriver
    from bbbb.roll import *
    
    caps = {
        "platformName": "Android",
        "deviceName": "127.0.0.1:62001",
        "platformVersion": "4.4.w",
        "appPackage": "com.baidu.yuedu",
        "appActivity": "com.baidu.yuedu.splash.SplashActivity"
    }
    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
    sleep(8)
    # 取消更新
    driver.find_element_by_id("com.baidu.yuedu:id/negativeUpgrade").click()
    sleep(4)
    driver.find_element_by_id('com.baidu.yuedu:id/righttitle').click()   #点击图书
    sleep(8)
    #向右移动一次
    size = driver.get_window_size()
    x1 = size.get("width") * 0.9
    x2 = size.get("width") * 0.1
    y = size.get("height") * 0.5
    driver.swipe(x1, y, x2, y, duration=1000)
    
    #向右移动一次
    size = driver.get_window_size()
    x1 = size.get("width") * 0.9
    x2 = size.get("width") * 0.1
    y = size.get("height") * 0.5
    driver.swipe(x1, y, x2, y, duration=1000)

    =======================================================

    案例演示(2)

    第一个模块:页面滑屏:aa模块

    from appium import webdriver
    from bbbb.roll import *
    
    caps = {
        "platformName": "Android",
        "deviceName": "127.0.0.1:62001",
        "platformVersion": "4.4.w",
        "appPackage": "com.baidu.yuedu",
        "appActivity": "com.baidu.yuedu.splash.SplashActivity"
    }
    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
    sleep(8)
    # 取消更新
    driver.find_element_by_id("com.baidu.yuedu:id/negativeUpgrade").click()
    sleep(4)
    driver.find_element_by_id('com.baidu.yuedu:id/righttitle').click()   #点击图书
    sleep(8)
    # rollUp(driver, 2)
    # rollDown(driver, 2)
    # rollLeft(driver, 3)
    # rollRight(driver, 3)

    第二个模块:roll.py

    from time import sleep
    
    # 左滑
    def rollLeft(driver, t=1):
        for i in range(t):
            size = driver.get_window_size()
            x1 = size.get("width") * 0.9
            x2 = size.get("width") * 0.1
            y = size.get("height") * 0.5
            driver.swipe(x1, y, x2, y, duration=1000)
            sleep(2)
    
    # 右滑
    def rollRight(driver, t=1):
        for i in range(t):
            size = driver.get_window_size()
            x1 = size.get("width") * 0.1
            x2 = size.get("width") * 0.9
            y = size.get("height") * 0.5
            driver.swipe(x1, y, x2, y, duration=1000)
            sleep(2)
    
    # 上滑
    def rollUp(driver, t=1):
        for i in range(t):
            size = driver.get_window_size()
            x = size.get("width") * 0.5
            y1 = size.get("height") * 0.9
            y2 = size.get("height") * 0.2
            driver.swipe(x, y1, x, y2, duration=1000)
            sleep(2)
    
    # 下滑
    def rollDown(driver, t=1):
        for i in range(t):
            size = driver.get_window_size()
            x = size.get("width") * 0.5
            y1 = size.get("height") * 0.2
            y2 = size.get("height") * 0.9
            driver.swipe(x, y1, x, y2, duration=1000)
            sleep(2)
    

    =====================================================================

  • 相关阅读:
    Ubuntu 12.10下为Firefox安装Adobe Flash Player
    oracle同时操作两个实例,如何进行切换操作?
    Ubuntu 12.10下为Firefox安装Adobe Flash Player
    Ubuntu11.10 安装oracle 11g
    oracle忘记system和sys账户的密码怎么办?
    linux 搭建java开发环境
    Oracle 笔记 day04
    节约网络带宽的设计策略
    集群化服务器
    01 基础概念(实战Linux Shell编程与服务器管理)
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/14203955.html
Copyright © 2020-2023  润新知