亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

利用Python appium實(shí)現(xiàn)模擬手機(jī)滑動(dòng)操控的操作

89542767 / 1027人閱讀


  小編寫這篇文章的主要目的,是給大家進(jìn)行一個(gè)相關(guān)的講解,講解的內(nèi)容主要是利用Python appium實(shí)現(xiàn)模擬手機(jī)滑動(dòng)的操作,具體的一些操作方法,下面給大家做出一個(gè)解答。


  其實(shí)在前面兩個(gè)章節(jié)的元素定位的場(chǎng)景,我們已經(jīng)對(duì)app中的自動(dòng)化操作已經(jīng)略知一二。這里我們發(fā)現(xiàn),實(shí)際上appium復(fù)用了selenium的很多很多的操作方式,所以像一些“點(diǎn)擊、輸入”等操作,這種常規(guī)的操作的方式與在WEB自動(dòng)化中的方式基本上是完全一致的,就不再進(jìn)行贅述了。


  唯一一個(gè)與WEB端不太一樣的地方就是關(guān)于“滑動(dòng)操控”,所以“頁(yè)面的滑動(dòng)”在實(shí)際操作手機(jī)過(guò)程中,也是最常使用的,只需要操控一個(gè)點(diǎn)在屏幕中拖動(dòng)到另外一個(gè)點(diǎn)就可以了。這個(gè)“滑”的過(guò)程就是一個(gè)滑動(dòng)的動(dòng)作。


  在“appium”中,對(duì)于“滑動(dòng)”的操作也做了一些簡(jiǎn)單的封裝,為其提供了方法,這就是“swipe”。


  滑動(dòng)操控


  OK,接下來(lái)我們就看一些,滑動(dòng)操控的腳本究竟要怎么寫。


  在模擬“滑動(dòng)操控”的時(shí)候,使用的方法就是swipe(),該方法的參數(shù)說(shuō)明如下:


  start_x:起始橫坐標(biāo)


  start_y:起始縱坐標(biāo)


  end_x:結(jié)束時(shí)橫坐標(biāo)


  end_y:結(jié)束時(shí)縱坐標(biāo)


  duration:滑動(dòng)持續(xù)時(shí)間,單位毫秒,默認(rèn)None(一般設(shè)置500-1000毫秒比較合適)


  ps:如果不設(shè)置"duration",即為0秒,無(wú)法看到滑動(dòng)效果。


  duration參數(shù)需要注意的是:在移動(dòng)設(shè)備上滑動(dòng)時(shí)間的快慢所形成的效果是不一樣的。以今日頭條APP首頁(yè)上滑為例,同樣的滑動(dòng)距離,滑動(dòng)較快則出現(xiàn)類似翻頁(yè)的效果,而滑動(dòng)較慢則是同一則新聞從起始位置滑動(dòng)到結(jié)束位置。


  手機(jī)屏幕的坐標(biāo):以手機(jī)屏幕最左上角的坐標(biāo)點(diǎn)為坐標(biāo)中心(0,0),向右話滑動(dòng)則縱坐標(biāo)不變,橫坐標(biāo)變大;向下滑動(dòng)則橫坐標(biāo)不變,縱坐標(biāo)變大。


  如何獲取設(shè)備屏幕坐標(biāo)系


  在實(shí)際工作場(chǎng)景中,不同測(cè)試機(jī)的屏幕尺寸存在著很大的差異性。所以正常情況下,我們不會(huì)選擇使用固定的的坐標(biāo)來(lái)滑動(dòng)屏幕。


  一般操作是,先獲取測(cè)試機(jī)屏幕尺寸,再通過(guò)獲取的手機(jī)屏幕尺寸來(lái)確定滑動(dòng)的起始、結(jié)束坐標(biāo);這樣,即使在我們更換了測(cè)試手機(jī)后也不需要重新更改坐標(biāo)。使用webdriver提供的get_window_size()方法可以獲取屏幕尺寸(即屏幕右下角的坐標(biāo)),方法如下:


  #獲取屏幕寬度
  width=driver.get_window_size()['width']
  #獲取屏幕高度
  height=driver.get_window_size()['heigth']


  滑動(dòng)屏幕操作代碼如下:()


  #屏幕從下向上滑動(dòng)
  driver.swipe(width*0.5,height*0.9,width*0.5,height*0.1,1000)
  sleep(1)
  #屏幕從上向下滑動(dòng)
  driver.swipe(width*0.5,height*0.1,width*0.5,height*0.9,1000)
  sleep(1)
  #屏幕從左向右滑動(dòng)
  driver.swipe(width*0.1,height*0.5,width*0.9,height*0.5,1000)
  sleep(1)
  #屏幕從右向左滑動(dòng)
  driver.swipe(width*0.9,height*0.5,width*0.1,height*0.5,1000)
  sleep(1)


  模擬實(shí)現(xiàn)一個(gè)簡(jiǎn)單的滑動(dòng)操作


  代碼示例如下:


  #coding=utf-8
  from time import sleep
  from appium import webdriver#appium的特色就是將安卓、IOS的底層封裝成了webdriver類型的語(yǔ)句
  from appium.webdriver.common.appiumby import By
  #啟動(dòng)參數(shù)
  desired_caps={}#定義desired_caps變量,用以賦值很多的啟動(dòng)信息
  desired_caps['platformName']='Android'#設(shè)備名稱、系統(tǒng)為"Android"
  desired_caps['platformVersion']='7.1.2'#這里是在夜神模擬器的設(shè)置中心查看安卓版本是"7.1.2",后續(xù)會(huì)告訴大家如何切換版本
  desired_caps['deviceName']='127.0.0.1:62001'#這里如果是真機(jī)的話填寫的是設(shè)備名稱;因?yàn)槲覀冇玫氖悄M器,填寫的是IP端口號(hào)
  #desired_caps['appPackage']='com.baidu.searchbox'#APP的包名;這里我們使用的是通訊錄
  #desired_caps['appActivity']='com.baidu.searchbox.SplashActivity'#啟動(dòng)的界面的名字(也或者叫啟動(dòng)名,默認(rèn)是"."開頭的)
  #desired_caps['automationName']='UiAutomator1'
  #聲明手機(jī)驅(qū)動(dòng)
  driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)#注冊(cè)到這個(gè)節(jié)點(diǎn)上,傳入"desired_caps"。這個(gè)節(jié)點(diǎn)就是"appium"開啟的端口節(jié)點(diǎn)
  sleep(1)
  #獲取屏幕寬度
  width=driver.get_window_size()['width']
  #獲取屏幕高度
  height=driver.get_window_size()['height']
  #利用"swipe"實(shí)現(xiàn)滑動(dòng),屏幕從下向上滑動(dòng)
  driver.swipe(width*0.5,height*0.9,width*0.5,height*0.1,1000)
  sleep(1)
  #利用"swipe"實(shí)現(xiàn)滑動(dòng),屏幕從上向下滑動(dòng)
  driver.swipe(width*0.5,height*0.1,width*0.5,height*0.9,1000)
  sleep(1)
  #利用"swipe"實(shí)現(xiàn)滑動(dòng),屏幕從左向右滑動(dòng)
  driver.swipe(width*0.1,height*0.5,width*0.9,height*0.5,1000)
  sleep(1)
  #利用"swipe"實(shí)現(xiàn)滑動(dòng),屏幕從右向左滑動(dòng)
  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()

  將“滑動(dòng)操控”改為公共的方法


  上文中的腳本雖然也能夠?qū)崿F(xiàn)我們針對(duì)App的“滑動(dòng)操控”的操作,但是代碼的整潔度上來(lái)看不是那么的美觀。既然如此,我們是否能夠?qū)⑵浞庋b起來(lái),變成一個(gè)公共的方法,當(dāng)然是可以的了,繼續(xù)往下看。


  代碼示例如下:


  #coding=utf-8
  from time import sleep
  from appium import webdriver#appium的特色就是將安卓、IOS的底層封裝成了webdriver類型的語(yǔ)句
  def getSize(driver):
  """獲取頁(yè)面大小"""
  x=driver.get_window_size()['width']
  y=driver.get_window_size()['height']
  return(x,y)
  def swipeRight(driver):
  """向右滑動(dòng)-[x軸變動(dòng),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):
  """向左滑動(dòng)-[x軸變動(dòng),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):
  """向下滑動(dòng)-[x軸不變,y軸變動(dòng)]"""
  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):
  """向上滑動(dòng)-[x軸不變,y軸變動(dòng)]"""
  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():
  #啟動(dòng)參數(shù)
  desired_caps={}#定義desired_caps變量,用以賦值很多的啟動(dòng)信息
  desired_caps['platformName']='Android'#設(shè)備名稱、系統(tǒng)為"Android"
  desired_caps['platformVersion']='7.1.2'#這里是在夜神模擬器的設(shè)置中心查看安卓版本是"7.1.2",后續(xù)會(huì)告訴大家如何切換版本
  desired_caps['deviceName']='127.0.0.1:62001'#這里如果是真機(jī)的話填寫的是設(shè)備名稱;因?yàn)槲覀冇玫氖悄M器,填寫的是IP端口號(hào)
  #desired_caps['appPackage']='com.baidu.searchbox'#APP的包名;這里我們使用的是通訊錄
  #desired_caps['appActivity']='com.baidu.searchbox.SplashActivity'#啟動(dòng)的界面的名字(也或者叫啟動(dòng)名,默認(rèn)是"."開頭的)
  #desired_caps['automationName']='UiAutomator1'
  #聲明手機(jī)驅(qū)動(dòng)
  driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)#注冊(cè)到這個(gè)節(jié)點(diǎn)上,傳入"desired_caps"。這個(gè)節(jié)點(diǎn)就是"appium"開啟的端口節(jié)點(diǎn)
  sleep(1)
  #利用"swipe"實(shí)現(xiàn)滑動(dòng),屏幕從下向上滑動(dòng)
  swipeDown(driver)
  sleep(2)
  #利用"swipe"實(shí)現(xiàn)滑動(dòng),屏幕從上向下滑動(dòng)
  swipeUp(driver)
  sleep(2)
  #利用"swipe"實(shí)現(xiàn)滑動(dòng),屏幕從左向右滑動(dòng)
  swipeLeft(driver)
  sleep(2)
  #利用"swipe"實(shí)現(xiàn)滑動(dòng),屏幕從右向左滑動(dòng)
  swipeRight(driver)
  sleep(2)
  driver.terminate_app('com.baidu.searchbox')
  #driver.quit()
  if __name__=='__main__':
  swipeDemo()


  其實(shí)滑動(dòng)在實(shí)際操作中應(yīng)用的場(chǎng)景還是不少的,就比如要定位的元素在頁(yè)面下方必須要通過(guò)滑動(dòng)才能往下滑將其展示出來(lái);再比如解鎖密碼、或者滑動(dòng)九宮格之類的場(chǎng)景…類似的滑動(dòng)場(chǎng)景,大家可以在真實(shí)的場(chǎng)景中逐步的去體驗(yàn)。


  到此,一個(gè)很簡(jiǎn)單的基于“百度App”實(shí)現(xiàn)的demo就到此結(jié)束了。但是該demo僅僅是基于實(shí)現(xiàn),沒有像之前的WEB框架那樣去同意做處理、去進(jìn)行PO模式的編寫。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/128008.html

相關(guān)文章

  • 首次公開,整理12年積累博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---9、APP爬取相關(guān)庫(kù)安裝:Appium安裝

    摘要:支持全平臺(tái)的安裝,我們直接從的里面安裝即可,鏈接為。平臺(tái)可以下載安裝包如,平臺(tái)可以下載安裝包如,平臺(tái)可以選擇下載源碼,但是更推薦用下文的安裝方式。上一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)爬取相關(guān)庫(kù)的安裝的安裝下一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)爬蟲框架的安裝 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---8、APP爬取相關(guān)庫(kù)的安裝:MitmProxy的安裝下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---10、爬蟲框架的安裝...

    caige 評(píng)論0 收藏0
  • 全面超越Appium,使用Airtest超快速開發(fā)App爬蟲

    摘要:代碼運(yùn)行完成以后,微信被打開了。能不能像前面打開知乎一樣,使用這個(gè)屬性呢也行,也不行?;瑒?dòng)屏幕使用的命令為,滑動(dòng)屏幕需要使用坐標(biāo)信息。單獨(dú)使用控制手機(jī)在 想開發(fā)網(wǎng)頁(yè)爬蟲,發(fā)現(xiàn)被反爬了?想對(duì) App 抓包,發(fā)現(xiàn)數(shù)據(jù)被加密了?不要擔(dān)心,使用 Airtest 開發(fā) App 爬蟲,只要人眼能看到,你就能抓到,最快只需要2分鐘,兼容 Unity3D、Cocos2dx-*、Android 原生 A...

    noONE 評(píng)論0 收藏0
  • 超全App 測(cè)試工具大全,收藏這篇就夠了【附帶官網(wǎng)|GitHub地址】

    摘要:三性能測(cè)試工具官網(wǎng)介紹騰訊開源的的隨身調(diào)測(cè)平臺(tái),支持和。官網(wǎng)介紹騰訊游戲部門開發(fā)的移動(dòng)全平臺(tái)性能測(cè)試分析工具平臺(tái)。百度的服務(wù)目前主要為收費(fèi)服務(wù)。 隨著移動(dòng)互聯(lián)網(wǎng)的高速發(fā)展,App 應(yīng)用非?;穑瑴y(cè)試工程師也會(huì)接觸到各種 app 應(yīng)用。除了人工測(cè)試之外,也可以通過(guò)一些測(cè)試工具來(lái)提高我們的測(cè)試效率...

    MRZYD 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<