小編寫這篇文章的主要目的,是給大家進行一個相關的講解,講解的內容主要是利用Python appium實現模擬手機滑動的操作,具體的一些操作方法,下面給大家做出一個解答。
其實在前面兩個章節的元素定位的場景,我們已經對app中的自動化操作已經略知一二。這里我們發現,實際上appium復用了selenium的很多很多的操作方式,所以像一些“點擊、輸入”等操作,這種常規的操作的方式與在WEB自動化中的方式基本上是完全一致的,就不再進行贅述了。
唯一一個與WEB端不太一樣的地方就是關于“滑動操控”,所以“頁面的滑動”在實際操作手機過程中,也是最常使用的,只需要操控一個點在屏幕中拖動到另外一個點就可以了。這個“滑”的過程就是一個滑動的動作。
在“appium”中,對于“滑動”的操作也做了一些簡單的封裝,為其提供了方法,這就是“swipe”。
滑動操控
OK,接下來我們就看一些,滑動操控的腳本究竟要怎么寫。
在模擬“滑動操控”的時候,使用的方法就是swipe(),該方法的參數說明如下:
start_x:起始橫坐標
start_y:起始縱坐標
end_x:結束時橫坐標
end_y:結束時縱坐標
duration:滑動持續時間,單位毫秒,默認None(一般設置500-1000毫秒比較合適)
ps:如果不設置"duration",即為0秒,無法看到滑動效果。
duration參數需要注意的是:在移動設備上滑動時間的快慢所形成的效果是不一樣的。以今日頭條APP首頁上滑為例,同樣的滑動距離,滑動較快則出現類似翻頁的效果,而滑動較慢則是同一則新聞從起始位置滑動到結束位置。
手機屏幕的坐標:以手機屏幕最左上角的坐標點為坐標中心(0,0),向右話滑動則縱坐標不變,橫坐標變大;向下滑動則橫坐標不變,縱坐標變大。
如何獲取設備屏幕坐標系
在實際工作場景中,不同測試機的屏幕尺寸存在著很大的差異性。所以正常情況下,我們不會選擇使用固定的的坐標來滑動屏幕。
一般操作是,先獲取測試機屏幕尺寸,再通過獲取的手機屏幕尺寸來確定滑動的起始、結束坐標;這樣,即使在我們更換了測試手機后也不需要重新更改坐標。使用webdriver提供的get_window_size()方法可以獲取屏幕尺寸(即屏幕右下角的坐標),方法如下:
#獲取屏幕寬度 width=driver.get_window_size()['width'] #獲取屏幕高度 height=driver.get_window_size()['heigth']
滑動屏幕操作代碼如下:()
#屏幕從下向上滑動 driver.swipe(width*0.5,height*0.9,width*0.5,height*0.1,1000) sleep(1) #屏幕從上向下滑動 driver.swipe(width*0.5,height*0.1,width*0.5,height*0.9,1000) sleep(1) #屏幕從左向右滑動 driver.swipe(width*0.1,height*0.5,width*0.9,height*0.5,1000) sleep(1) #屏幕從右向左滑動 driver.swipe(width*0.9,height*0.5,width*0.1,height*0.5,1000) sleep(1)
模擬實現一個簡單的滑動操作
代碼示例如下:
#coding=utf-8 from time import sleep from appium import webdriver#appium的特色就是將安卓、IOS的底層封裝成了webdriver類型的語句 from appium.webdriver.common.appiumby import By #啟動參數 desired_caps={}#定義desired_caps變量,用以賦值很多的啟動信息 desired_caps['platformName']='Android'#設備名稱、系統為"Android" desired_caps['platformVersion']='7.1.2'#這里是在夜神模擬器的設置中心查看安卓版本是"7.1.2",后續會告訴大家如何切換版本 desired_caps['deviceName']='127.0.0.1:62001'#這里如果是真機的話填寫的是設備名稱;因為我們用的是模擬器,填寫的是IP端口號 #desired_caps['appPackage']='com.baidu.searchbox'#APP的包名;這里我們使用的是通訊錄 #desired_caps['appActivity']='com.baidu.searchbox.SplashActivity'#啟動的界面的名字(也或者叫啟動名,默認是"."開頭的) #desired_caps['automationName']='UiAutomator1'
#聲明手機驅動 driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)#注冊到這個節點上,傳入"desired_caps"。這個節點就是"appium"開啟的端口節點 sleep(1) #獲取屏幕寬度 width=driver.get_window_size()['width'] #獲取屏幕高度 height=driver.get_window_size()['height'] #利用"swipe"實現滑動,屏幕從下向上滑動 driver.swipe(width*0.5,height*0.9,width*0.5,height*0.1,1000) sleep(1) #利用"swipe"實現滑動,屏幕從上向下滑動 driver.swipe(width*0.5,height*0.1,width*0.5,height*0.9,1000) sleep(1) #利用"swipe"實現滑動,屏幕從左向右滑動 driver.swipe(width*0.1,height*0.5,width*0.9,height*0.5,1000) sleep(1) #利用"swipe"實現滑動,屏幕從右向左滑動 driver.swipe(width*0.9,height*0.5,width*0.1,height*0.5,1000) sleep(1) driver.terminate_app('com.baidu.searchbox') #driver.quit()
將“滑動操控”改為公共的方法
上文中的腳本雖然也能夠實現我們針對App的“滑動操控”的操作,但是代碼的整潔度上來看不是那么的美觀。既然如此,我們是否能夠將其封裝起來,變成一個公共的方法,當然是可以的了,繼續往下看。
代碼示例如下:
#coding=utf-8 from time import sleep from appium import webdriver#appium的特色就是將安卓、IOS的底層封裝成了webdriver類型的語句 def getSize(driver): """獲取頁面大小""" x=driver.get_window_size()['width'] y=driver.get_window_size()['height'] return(x,y) def swipeRight(driver): """向右滑動-[x軸變動,y軸不變]""" l=getSize(driver) x1=int(l[0]*0.8) x2=int(l[0]*0.2) y=int(l[1]*0.5) driver.swipe(x1,y,x2,y,1000) def swipeLeft(driver): """向左滑動-[x軸變動,y軸不變]""" l=getSize(driver) x1=int(l[0]*0.9) x2=int(l[0]*0.1) y=int(l[1]*0.5) driver.swipe(x2,y,x1,y,1000) def swipeDown(driver): """向下滑動-[x軸不變,y軸變動]""" l=getSize(driver) y1=int(l[1]*0.9) y2=int(l[1]*0.1) x=int(l[0]*0.5) driver.swipe(x,y1,x,y2,1000) def swipeUp(driver): """向上滑動-[x軸不變,y軸變動]""" l=getSize(driver) y1=int(l[1]*0.8) y2=int(l[1]*0.2) x=int(l[0]*0.5) driver.swipe(x,y2,x,y1,1000) def swipeDemo():
#啟動參數 desired_caps={}#定義desired_caps變量,用以賦值很多的啟動信息 desired_caps['platformName']='Android'#設備名稱、系統為"Android" desired_caps['platformVersion']='7.1.2'#這里是在夜神模擬器的設置中心查看安卓版本是"7.1.2",后續會告訴大家如何切換版本 desired_caps['deviceName']='127.0.0.1:62001'#這里如果是真機的話填寫的是設備名稱;因為我們用的是模擬器,填寫的是IP端口號 #desired_caps['appPackage']='com.baidu.searchbox'#APP的包名;這里我們使用的是通訊錄 #desired_caps['appActivity']='com.baidu.searchbox.SplashActivity'#啟動的界面的名字(也或者叫啟動名,默認是"."開頭的) #desired_caps['automationName']='UiAutomator1' #聲明手機驅動 driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)#注冊到這個節點上,傳入"desired_caps"。這個節點就是"appium"開啟的端口節點 sleep(1) #利用"swipe"實現滑動,屏幕從下向上滑動 swipeDown(driver) sleep(2) #利用"swipe"實現滑動,屏幕從上向下滑動 swipeUp(driver) sleep(2) #利用"swipe"實現滑動,屏幕從左向右滑動 swipeLeft(driver) sleep(2) #利用"swipe"實現滑動,屏幕從右向左滑動 swipeRight(driver) sleep(2) driver.terminate_app('com.baidu.searchbox') #driver.quit() if __name__=='__main__': swipeDemo()
其實滑動在實際操作中應用的場景還是不少的,就比如要定位的元素在頁面下方必須要通過滑動才能往下滑將其展示出來;再比如解鎖密碼、或者滑動九宮格之類的場景…類似的滑動場景,大家可以在真實的場景中逐步的去體驗。
到此,一個很簡單的基于“百度App”實現的demo就到此結束了。但是該demo僅僅是基于實現,沒有像之前的WEB框架那樣去同意做處理、去進行PO模式的編寫。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128008.html
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:支持全平臺的安裝,我們直接從的里面安裝即可,鏈接為。平臺可以下載安裝包如,平臺可以下載安裝包如,平臺可以選擇下載源碼,但是更推薦用下文的安裝方式。上一篇文章網絡爬蟲實戰爬取相關庫的安裝的安裝下一篇文章網絡爬蟲實戰爬蟲框架的安裝 上一篇文章:Python3網絡爬蟲實戰---8、APP爬取相關庫的安裝:MitmProxy的安裝下一篇文章:Python3網絡爬蟲實戰---10、爬蟲框架的安裝...
摘要:代碼運行完成以后,微信被打開了。能不能像前面打開知乎一樣,使用這個屬性呢也行,也不行。滑動屏幕使用的命令為,滑動屏幕需要使用坐標信息。單獨使用控制手機在 想開發網頁爬蟲,發現被反爬了?想對 App 抓包,發現數據被加密了?不要擔心,使用 Airtest 開發 App 爬蟲,只要人眼能看到,你就能抓到,最快只需要2分鐘,兼容 Unity3D、Cocos2dx-*、Android 原生 A...
摘要:三性能測試工具官網介紹騰訊開源的的隨身調測平臺,支持和。官網介紹騰訊游戲部門開發的移動全平臺性能測試分析工具平臺。百度的服務目前主要為收費服務。 隨著移動互聯網的高速發展,App 應用非常火,測試工程師也會接觸到各種 app 應用。除了人工測試之外,也可以通過一些測試工具來提高我們的測試效率...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1983·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02