亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn)

系統(tǒng) 1971 0

簡介

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

問題思考

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

MultiAction

MultiAction 是多點觸控的類,可以模擬用戶多點操作。主要包含? 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:是不是有點類似Python里面的多線程和多進程的使用。

多點觸控操作實踐 ——地圖App縮放

測試場景

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

測試環(huán)境

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

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第1張圖片

?

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

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第2張圖片

3.宏哥的appium版本:1.4.16?

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第3張圖片

4.selenium:3.141.0

安裝selenium:

輸入指令pip install selenium

驗證安裝成功:pip show selenium

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第4張圖片

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

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第5張圖片

6.Python:3.7.2

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

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第6張圖片

7.百度地圖 Android版 V10.6.5

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第7張圖片

滑動原理圖解

? Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第8張圖片

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

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

想法與思路

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

代碼實現(xiàn)

(1)安裝啟動百度地圖

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第9張圖片

(2)點擊“同意”,然后接著點擊“進入地圖

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第10張圖片

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

活動關(guān)閉定位

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第11張圖片

代碼實現(xiàn)

? Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第12張圖片

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

? Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第13張圖片

代碼運行結(jié)果

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第14張圖片

運行代碼夜神模擬器自動化操作

參考代碼

            
               1
            
             # coding=utf-
            
              8
            
            
               2
            
             # 
            
              1
            
            .先設(shè)置編碼,utf-
            
              8可支持中英文,如上,一般放在第一行

            
            
               3
            
            
               4
            
             # 
            
              2
            
            
              .注釋:包括記錄創(chuàng)建時間,創(chuàng)建人,項目名稱。

            
            
               5
            
            
              '''

            
            
               6
            
             Created on 
            
              2019
            
            -
            
              8
            
            -
            
              08
            
            
               7
            
             @author: 北京-宏哥   QQ交流群:
            
              707699217
            
            
               8
            
             Project:學(xué)習(xí)和使用appium自動化測試-
            
              多點觸控操作

            
            
               9
            
            
              '''

            
            
              10
            
             # 
            
              3
            
            
              .導(dǎo)入模塊

            
            
              11
            
            
              from
            
            
               appium import webdriver

            
            
              12
            
            
              from
            
            
               selenium.common.exceptions import NoSuchElementException

            
            
              13
            
            
              from
            
            
               appium.webdriver.common.touch_action import TouchAction

            
            
              14
            
            
              from
            
            
               appium.webdriver.common.multi_action import MultiAction

            
            
              15
            
            
              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
            
            
              #點擊同意

            
            
              31
            
             driver.find_element_by_id(
            
              '
            
            
              com.baidu.BaiduMap:id/ok_btn
            
            
              '
            
            
              ).click()

            
            
              32
            
            
              #點擊進入地圖

            
            
              33
            
             driver.find_element_by_id(
            
              '
            
            
              com.baidu.BaiduMap:id/btn_enter_map
            
            
              '
            
            
              ).click()

            
            
              34
            
            
              35
            
            
              #檢測是否有活動頁面彈窗,如果有就點擊關(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)建人,項目名稱。

            
            
              '''

            
            Created on 
            
              2019
            
            -
            
              8
            
            -
            
              08
            
            
              
@author: 北京
            
            -宏哥   QQ交流群:
            
              707699217
            
            
              
Project:學(xué)習(xí)和使用appium自動化測試
            
            -
            
              多點觸控操作

            
            
              '''

            
            # 
            
              3
            
            
              .導(dǎo)入模塊

            
            
              from
            
            
               appium import webdriver

            
            
              from
            
            
               selenium.common.exceptions import NoSuchElementException

            
            
              from
            
            
               appium.webdriver.common.touch_action import TouchAction

            
            
              from
            
            
               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
            
            
              '
            
            
              ]
#點擊同意
driver.find_element_by_id(
            
            
              '
            
            
              com.baidu.BaiduMap:id/ok_btn
            
            
              '
            
            
              ).click()
#點擊進入地圖
driver.find_element_by_id(
            
            
              '
            
            
              com.baidu.BaiduMap:id/btn_enter_map
            
            
              '
            
            
              ).click()

#檢測是否有活動頁面彈窗,如果有就點擊關(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í)行當前py文件;否則當前文件屬于調(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)于多點觸控宏哥就簡單的介紹到這里,大家晚安!!!

您的肯定就是我進步的動力。 如果你感覺還不錯,就請鼓勵一下吧!記得點波? 推薦 ?哦!!!(點擊右邊的小球即可!?:))
Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第15張圖片

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

Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第16張圖片 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Appium+python自動化(二十九)- 模擬手指在手機上多線多點作戰(zhàn) - 多點觸控(超詳解)_第17張圖片


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本亚洲精品久久 | 九色网址 | 久久国产精品范冰啊 | 婷婷色中文字幕 | 99久久综合国产精品免费 | 国产精品亚洲精品日韩已满 | 老子影院午夜伦手机不四虎 | 中文字幕精品在线视频 | 久久亚洲国产伦理 | 国产午夜精品一二区理论影院 | 久久九色 | 久久亚洲人成国产精品 | 日韩亚洲国产综合久久久 | 色婷婷久久综合中文网站 | 久久国产高清视频 | 国产精品成人免费 | 国产aaa级一级毛片 国产aaa毛片 | 在线精品国产 | 999在线视频| 伊人精品在线观看 | 免费观看91视频 | 日韩精品一区二区三区 在线观看 | 国产真实伦偷精品 | 91精品国产综合久久久久 | 91成人在线 | 激情综合在线 | 99久久国产免费福利 | 久久亚洲综合中文字幕 | 99在线精品视频免费观里 | 91国内视频在线观看 | 九九热精 | 99视频在线国产 | 四虎网站入口 | 欧美videos肥婆hd | 亚洲欧美日韩成人一区在线 | 日本黄页免费 | 四虎网站在线播放 | 成人黄色毛片 | 国产99视频精品免费视频7 | 亚洲国产男人本色在线观看的a站 | 四虎国产成人亚洲精品 |