• appium之模拟坐标方法介绍


    一、模拟坐标定位 

    在appium中模拟坐标定位不到万不得已不要使用,因为不同手机分辨率不同,同样的元素在不同手机的位置不同。

    模拟坐标点击用到了两个方法

    driver.get_window_size()    获取屏幕的宽和高,下面的例子中也可以不用这个方法,将坐标写死。

    driver.tap([(x,y)],3000)    tap 方法和 click 类似,都是点击界面。但是最大的区别是,tap 是针对做坐标而不是针对找到的元素

     第一个参数positions最多可以有五个坐标,代表5根手指,是 list 类型。第二个参数 duration按住停留的时间,单位是毫秒

    以boss直聘为例

    #导包
    from appium import webdriver
    import time
    #准备自动化配置信息
    desired_caps={
        #移动设备平台
        'platformName':'Android',
        #平台OS版本号,写整数位即可
        'plathformVersion':'10',
        #设备的名称--值可以随便写
        'deviceName':'MIUI12.0.1',
        #提供被测app的信息-包名,入口信息:
        #使用命令adb shell dumpsys activity recents | findstr intent={      获取包名和入口信息以/分隔
        'appPackage':'com.hpbr.bosszhipin',
        'appActivity':'.module.launcher.WelcomeActivity',
        #确保自动化之后不重置app
        'noReset':True,
        #设置session的超时时间,单位秒
        'newCommandTimeout':6000,
        #设置底层测试驱动-1.15默认使用的底层驱动就是UiAutomator1
        'automationName':'UiAutomator2',#指定为UiAutomator2
        'skipServerInstallation':True#跳过UI2的安装,如果第一次运行程序,不要添加该配置
    }
    #初始化driver对象-用于控制手机-启动被测应用
    #IP-appium-server所在机器的网络ip,port-监听的端口号,path固定/wd/hub
    driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
    driver.implicitly_wait(10)#稳定元素
    
    time.sleep(5)
    #模拟相对坐标
    #获取到手机屏幕的宽度和高度,它是一个字典
    size=driver.get_window_size()
    #将它的宽度赋值给width
    width=size['width']
    #将它的高度赋值给height
    height=size['height']
    y=height/4
    x=width/2
    #模拟坐标点击,positions参数是时间单位ms
    driver.tap([(x,y)],3000)
    input('输入任意字符退出')
    driver.quit()

    二、使用坐标滑动屏幕

    滑动使用的是driver.swipe(x1,y1,x2,y2,duration)

    解释:x1,y1是起始坐标,x2,y2是终止坐标,duration参数时滑动时长

    用法:坐标原点是屏幕的左上角,当x2与x1相等时,我们只需要更改y1和y2的值就可以控制滑动的距离

    更改y1和y2的值大小,就可以控制是向上滑动,还是向下滑动,左右滑动类似。

    #导包
    from appium import webdriver
    import time
    #准备自动化配置信息
    desired_caps={
        #移动设备平台
        'platformName':'Android',
        #平台OS版本号,写整数位即可
        'plathformVersion':'10',
        #设备的名称--值可以随便写
        'deviceName':'MIUI12.0.1',
        #提供被测app的信息-包名,入口信息:
        #使用命令adb shell dumpsys activity recents | findstr intent={      获取包名和入口信息以/分隔
        'appPackage':'com.hpbr.bosszhipin',   #手机桌面包
        'appActivity':'.module.launcher.WelcomeActivity',   #入口
        #确保自动化之后不重置app
        'noReset':True,
        #设置session的超时时间,单位秒
        'newCommandTimeout':6000,
        #设置底层测试驱动-1.15默认使用的底层驱动就是UiAutomator1
        'automationName':'UiAutomator2',#指定为UiAutomator2
        'skipServerInstallation':True#跳过UI2的安装,如果第一次运行程序,不要添加该配置
    }
    #初始化driver对象-用于控制手机-启动被测应用
    #IP-appium-server所在机器的网络ip,port-监听的端口号,path固定/wd/hub
    driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
    driver.implicitly_wait(10)
    
    time.sleep(8)
    #模拟滑动
    x1=500
    y1=1300
    x2=x1
    y2=y1-1000
    driver.swipe(x1,y1,x2,y2)
    input('滑动结束')
    driver.quit()

     三、使用坐标模拟长按效果

    需求:我们对手机桌面应用长按

    首先,获取手机桌面包名和入口信息,在命令行输入:使用命令adb shell dumpsys activity recents | findstr intent={ 

    然后,使用tap方法,获取想要长按的坐标,时间参数可根据长按的时间来定

    最后,尝试下面的代码

    #导包
    from appium import webdriver
    import time
    #准备自动化配置信息
    desired_caps={
        #移动设备平台
        'platformName':'Android',
        #平台OS版本号,写整数位即可
        'plathformVersion':'10',
        #设备的名称--值可以随便写
        'deviceName':'MIUI12.0.1',
        #提供被测app的信息-包名,入口信息:
        'appPackage':'com.miui.home',   #手机桌面包
        'appActivity':'.launcher.Launcher',   #入口
        #确保自动化之后不重置app
        'noReset':True,
        #设置session的超时时间,单位秒
        'newCommandTimeout':6000,
        #设置底层测试驱动-1.15默认使用的底层驱动就是UiAutomator1
        'automationName':'UiAutomator2',#指定为UiAutomator2
        'skipServerInstallation':True#跳过UI2的安装,如果第一次运行程序,不要添加该配置
    }
    #初始化driver对象-用于控制手机-启动被测应用
    #IP-appium-server所在机器的网络ip,port-监听的端口号,path固定/wd/hub
    driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
    driver.implicitly_wait(10)#稳定元素
    
    time.sleep(5)
    #设置手指停留时间---模拟长按效果
    driver.tap([(530,650)],5000)
    
    input('输入任意键退出代码')
    driver.quit()
  • 相关阅读:
    js 模拟表单提交下载文件
    vue 刷新子组件方法解决使用v-if闪屏问题
    Java15-Tomcat&Servlet&HTTP&Request&Response
    JAVA26-SpringBoot-在线教育项目01
    20 Vue-ajax
    19 Vue-JQuery
    18 Vue-Json
    Java 20-Mybatis学习
    17 Vue-ES6语法之Promise、VueX、网络请求封装
    16 Vue-cli脚手架介绍与使用
  • 原文地址:https://www.cnblogs.com/king2/p/13682138.html
Copyright © 2020-2023  润新知