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()


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM