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