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