<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      簡介


      在網(wǎng)頁中我們經(jīng)常使用縮放操作來便利的查看具體的信息,在appium中使用MultiAction多點(diǎn)觸控的類來實(shí)現(xiàn)。MultiAction是多點(diǎn)觸控的類,可以模擬用戶多點(diǎn)操作。主要包含加載add()和執(zhí)行perform()兩個方法.

      問題思考

      在使用地圖App中,我們經(jīng)常需要對界面進(jìn)行縮放操作來更加便利的查看位置。那么在Appium中怎樣去模擬這類操作呢?

      MultiAction

      MultiAction 是多點(diǎn)觸控的類,可以模擬用戶多點(diǎn)操作。主要包含?add()?和?perform()?兩個方法,
      MultiAction可以結(jié)合前面所學(xué)的?ActionTouch
      可以模擬出用戶的多個手指滑動的操作效果;?MultiAction一般和TouchAction結(jié)合使用,故需要導(dǎo)入以下模塊:
      from appium.webdriver.common.multi_action import MultiAction from
      appium.webdriver.common.touch_action import TouchAction
      加載:

      方法add(self, *touch_actions)將TouchAction對象添加到MultiAction中,稍后再執(zhí)行。

      參數(shù):

      * touch_actions - 一個或多個TouchAction對象,描述一個手指要執(zhí)行的動作鏈
      用法
      a1 = TouchAction(driver) a1.press(el1).move_to(el2).release() a2 =
      TouchAction(driver) a2.press(el2).move_to(el1).release()
      MultiAction(driver).add(a1, a2)
      執(zhí)行

      perform(self) 執(zhí)行存儲在對象中的操作。

      用法
      a1 = TouchAction(driver) a1.press(el1).move_to(el2).release() a2 =
      TouchAction(driver) a2.press(el2).move_to(el1).release()
      MultiAction(driver).add(a1, a2).perform()
      Ps:是不是有點(diǎn)類似Python里面的多線程和多進(jìn)程的使用。

      多點(diǎn)觸控操作實(shí)踐——地圖App縮放

      測試場景

      安裝啟動百度地圖Android app 進(jìn)入地圖后分別進(jìn)行放大縮小操作

      測試環(huán)境

      1.宏哥的系統(tǒng)環(huán)境是Windows 10版本 64位系統(tǒng)



      ?

      2.宏哥的dk版本:"1.8.0_181"



      3.宏哥的appium版本:1.4.16?



      4.selenium:3.141.0

      安裝selenium:

      輸入指令pip install selenium

      驗(yàn)證安裝成功:pip show selenium



      5.測試設(shè)備:Android 5.1.1 (不能低于5.0版本)



      6.Python:3.7.2

      命令:python -V? ,回車即可。



      7.百度地圖Android版 V10.6.5



      滑動原理圖解

      ?

      放大(Zoom):則手指分別從B>A,C>D同時向外移動放大頁面

      縮?。╬inch):則手指分別從A>B,D>C同時向中間移動縮小頁面

      想法與思路

      * 安裝啟動百度地圖APP
      * 啟動后代碼實(shí)現(xiàn)點(diǎn)擊“同意”,然后接著點(diǎn)擊“進(jìn)入地圖”
      * 進(jìn)入地圖由于最近剛過完七夕,有個搶紅包的活動,將其關(guān)閉
      * 執(zhí)行縮小函數(shù)3次,將地圖縮小三次;緊接著執(zhí)行放大函數(shù),將地圖放大三次。
      代碼實(shí)現(xiàn)

      (1)安裝啟動百度地圖



      (2)點(diǎn)擊“同意”,然后接著點(diǎn)擊“進(jìn)入地圖



      (3)進(jìn)入地圖由于最近剛過完七夕,有個搶紅包的活動,將其關(guān)閉

      活動關(guān)閉定位



      代碼實(shí)現(xiàn)

      ?

      (4)執(zhí)行縮小函數(shù)3次,將地圖縮小三次;緊接著執(zhí)行放大函數(shù),將地圖放大三次

      ?

      代碼運(yùn)行結(jié)果



      運(yùn)行代碼夜神模擬器自動化操作



      參考代碼
      1 # coding=utf-8 2 # 1.先設(shè)置編碼,utf-8可支持中英文,如上,一般放在第一行 3 4 # 2
      .注釋:包括記錄創(chuàng)建時間,創(chuàng)建人,項(xiàng)目名稱。 5 ''' 6 Created on 2019-8-08 7 @author: 北京-宏哥 QQ交流群:
      707699217 8 Project:學(xué)習(xí)和使用appium自動化測試-多點(diǎn)觸控操作 9 ''' 10 # 3.導(dǎo)入模塊 11 from appium
      import webdriver12 from selenium.common.exceptions import NoSuchElementException
      13 from appium.webdriver.common.touch_action import TouchAction 14 from
      appium.webdriver.common.multi_action import MultiAction15 16 desired_caps={} 17
      desired_caps['platformName']='Android' 18 desired_caps['deviceName']='
      127.0.0.1:62001' 19 desired_caps['platforVersion']='5.1.1' 20 21 desired_caps['
      app']=r'C:\Users\DELL\Downloads\base.apk' 22 desired_caps['appPackage']='
      com.baidu.BaiduMap' 23 desired_caps['appActivity']='
      com.baidu.baidumaps.WelcomeScreen' 24 25 driver=webdriver.Remote('
      http://localhost:4723/wd/hub',desired_caps) 26 driver.implicitly_wait(5) 27 28
      x=driver.get_window_size()['width'] 29 y=driver.get_window_size()['height'] 30
      #點(diǎn)擊同意31 driver.find_element_by_id('com.baidu.BaiduMap:id/ok_btn').click() 32
      #點(diǎn)擊進(jìn)入地圖33 driver.find_element_by_id('com.baidu.BaiduMap:id/btn_enter_map'
      ).click()34 35 #檢測是否有活動頁面彈窗,如果有就點(diǎn)擊關(guān)閉(宏哥做的時候有個領(lǐng)紅包的活動頁面) 36 try: 37
      closeBtn=driver.find_element_by_id('com.baidu.BaiduMap:id/guide_close') 38
      except NoSuchElementException:39 pass 40 else: 41 closeBtn.click() 42 43 def
      pinch():44 action1=TouchAction(driver) 45 action2=TouchAction(driver) 46
      pinch_action=MultiAction(driver) 47 48 action1.press(x=x*0.2,y=y*0.2).wait(1000
      ).move_to(x=x*0.4,y=y*0.4).wait(1000).release() 49 action2.press(x=x*0.8,y=y*0.8
      ).wait(1000).move_to(x=x*0.6,y=y*0.6).wait(1000).release() 50 51
      pinch_action.add(action1,action2)52 print('start pinch...') 53
      pinch_action.perform()54 55 def zoom(): 56 action1 = TouchAction(driver) 57
      action2 = TouchAction(driver) 58 zoom_action = MultiAction(driver) 59 60
      action1.press(x=x *0.4, y=y * 0.4).wait(1000).move_to(x=x * 0.2, y=y * 0.2
      ).wait(1000).release() 61 action2.press(x=x * 0.6, y=y * 0.6).wait(1000
      ).move_to(x=x *0.8, y=y * 0.8).wait(1000).release() 62 63
      zoom_action.add(action1,action2)64 print("start zoom...") 65
      zoom_action.perform()66 67 if __name__ == '__main__': 68 for i in range(3): 69
      pinch()70 71 for i in range(3): 72 zoom()
      合格開發(fā)的參考代碼
      # coding=utf-8 # 1.先設(shè)置編碼,utf-8可支持中英文,如上,一般放在第一行 # 2.注釋:包括記錄創(chuàng)建時間,創(chuàng)建人,項(xiàng)目名稱。 '''
      Created on2019-8-08 @author: 北京-宏哥 QQ交流群:707699217 Project:學(xué)習(xí)和使用appium自動化測試-
      多點(diǎn)觸控操作''' # 3.導(dǎo)入模塊 from appium import webdriver from selenium.common.exceptions
      import NoSuchElementExceptionfrom appium.webdriver.common.touch_action import
      TouchActionfrom appium.webdriver.common.multi_action import MultiAction #初始化
      desired_caps={} desired_caps['platformName']='Android' desired_caps['deviceName'
      ]='127.0.0.1:62001' desired_caps['platforVersion']='5.1.1' desired_caps['app']=r
      'C:\Users\DELL\Downloads\base.apk' desired_caps['appPackage']='
      com.baidu.BaiduMap' desired_caps['appActivity']='
      com.baidu.baidumaps.WelcomeScreen' driver=webdriver.Remote('
      http://localhost:4723/wd/hub',desired_caps) driver.implicitly_wait(5) x
      =driver.get_window_size()['width'] y=driver.get_window_size()['height'] #點(diǎn)擊同意
      driver.find_element_by_id('com.baidu.BaiduMap:id/ok_btn').click() #點(diǎn)擊進(jìn)入地圖
      driver.find_element_by_id('com.baidu.BaiduMap:id/btn_enter_map').click()
      #檢測是否有活動頁面彈窗,如果有就點(diǎn)擊關(guān)閉(宏哥做的時候有個領(lǐng)紅包的活動頁面)try: closeBtn=driver.find_element_by_id('
      com.baidu.BaiduMap:id/guide_close') except NoSuchElementException: pass else:
      closeBtn.click() #定義縮小函數(shù) def pinch(): action1=TouchAction(driver) #第一個手勢 action2
      =TouchAction(driver) #第二個手勢 pinch_action=MultiAction(driver) #縮小手勢
      action1.press(x=x*0.2,y=y*0.2).wait(1000).move_to(x=x*0.4,y=y*0.4).wait(1000
      ).release() action2.press(x=x*0.8,y=y*0.8).wait(1000).move_to(x=x*0.6,y=y*0.6
      ).wait(1000).release() pinch_action.add(action1,action2) #加載 print('start
      pinch...') pinch_action.perform() #執(zhí)行 #定義放大函數(shù) def zoom(): action1 =
      TouchAction(driver) #第一個手勢 action2= TouchAction(driver) #第二個手勢 zoom_action =
      MultiAction(driver) #放大手勢 action1.press(x=x * 0.4, y=y * 0.4).wait(1000
      ).move_to(x=x *0.2, y=y * 0.2).wait(1000).release() action2.press(x=x * 0.6,
      y=y *0.6).wait(1000).move_to(x=x * 0.8, y=y * 0.8).wait(1000).release()
      zoom_action.add(action1,action2) #加載 print("start zoom...")
      zoom_action.perform() #執(zhí)行 #主函數(shù)調(diào)用子函數(shù) #__name=’__main__’表示執(zhí)行當(dāng)前py文件;否則當(dāng)前文件屬于調(diào)用模塊 if
      __name__ =='__main__': for i in range(3): #執(zhí)行縮小函數(shù)3次,range(3)代表執(zhí)行0,1,2共3次
      pinch()for i in range(3): #執(zhí)行放大函數(shù)3次,range(3)代表執(zhí)行0,1,2共3次 zoom()
      小結(jié)

      ?  好了,時間不早了,關(guān)于多點(diǎn)觸控宏哥就簡單的介紹到這里,大家晚安?。?!

      您的肯定就是我進(jìn)步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得點(diǎn)波?推薦?哦?。。。c(diǎn)擊右邊的小球即可!?:))


      ? ? ? ?個人公眾號? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?微信群
      ?(微信群已滿100,可以加宏哥的微信拉你進(jìn)群,請備注:進(jìn)群)? ? ? ? ??

      ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          免费无码精品久久久嫩青 | 中文字幕 乱码 中文乱码图片 | 日韩欧美黄色电影一区 | 艹逼视频网址 | freesex性hd公交车上 | 五月丁香花在线视频 | 天堂一级片 | www.做爱视频 | 国产麻豆交换夫妇 | 男女爱爱爱爱爽爽爽视频在线观看 |