appium---TouchAction


  我們在做app測試的時候,都會寫一些長按,雙擊,滑動,拖動等一系列簡單的操作來驗證按鈕或者跳轉頁是否正常的用例,那么我們在做自動化測試的時候這些操作應該怎么去做呢?

TouchAction

TouchAction是APPium中封裝的一個方法,主要是都手勢控制的一些操作:長按,滑動,等其他操作。

源碼:

class TouchAction(object):
    def __init__(self, driver=None):
        self._driver = driver
        self._actions = []

    def tap(self, element=None, x=None, y=None, count=1):
        對元素執行點擊操作
    參數:
    -元素-要點擊的元素
    - x -(可選)x坐標點擊,相對於左上角的元素。
    - y -(可選)y坐標。如果使用y,也必須設置x,反之亦然
        """
        opts = self._get_opts(element, x, y)
        opts['count'] = count
        self._add_action('tap', opts)

        return self

    def press(self, el=None, x=None, y=None, pressure=None):
        """以在特定元素或點上的下拉操作開始鏈
    參數:
    - el -(可選)要按的元素
    - x -(可選)x配合按。如果使用y,也必須設置x
    - y -(可選)y可按。如果使用x,也必須設置y
    -壓力-(可選)[iOS只]按作為強制觸摸。
        """
        self._add_action('press', self._get_opts(el, x, y, pressure=pressure))

        return self

    def long_press(self, el=None, x=None, y=None, duration=1000):
        """長按
        """
        self._add_action('longPress', self._get_opts(el, x, y, duration))

        return self

    def wait(self, ms=0):
        """按住元素后的等待時間
        """
        if ms is None:
            ms = 0

        opts = {'ms': ms}

        self._add_action('wait', opts)

        return self

    def move_to(self, el=None, x=None, y=None):
        """從這個坐標移動到另一個
        """
        self._add_action('moveTo', self._get_opts(el, x, y))

        return self

    def release(self):
        """釋放手指
        """
        self._add_action('release', {})

        return self

    def perform(self):
        """執行動作
        """
        params = {'actions': self._actions}
        self._driver.execute(Command.TOUCH_ACTION, params)

        # get rid of actions so the object can be reused
        self._actions = []

        return self

這里我們先拿一個小栗子說明使用方法

class Actions(object):

    def __init__(self):
        self._actions = []

    def a(self, x):
        self._actions.append(x)
        return self

    def b(self, y):
        self._actions.append(y)
        return self

    def c(self, z):
        self._actions.append(z)
        return self

    def perform(self):
        print(self._actions)

if __name__ == '__main__':
    Actions().a("hello").c("world").b("aaa").perform()



------結果-------
['hello', 'world', 'aaa']

其實TouchAction就是通過這個方法來執行的,我們進行一系列的操作來后,通過perform方法來執行運行

 tap

這個tap其實和前面模擬點擊中寫的tap是差不多,TouchAction中的tap中可以加入直接加入元素,也可以通過坐標進行定位

# coding:utf-8
from appium import webdriver
# 導入TochAction模塊
from appium.webdriver.common.touch_action import TouchAction
import time
desired_caps = {
                 'platformName': 'Android',  # 測試版本
                 'deviceName': 'emulator-5554',   # 設備名
                 'platformVersion': '5.1.1', # 系統版本
                "appPackage": "com.taobao.taobao",   # app包名
                "appActivity": "com.taobao.tao.welcome.Welcome",   # 啟動launch Activity
                "noReset": True,  # 不清空數據
                "unicodeKeyboard": True,    # 使用Unicode編碼方式發送字符串
                "resetKeyboard": True,      # 鍵盤隱藏起來
                        }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(10)
# 登錄按鈕
element = driver.find_element_by_class_name('android.widget.Button')
# 實例化
toch = TouchAction(driver)
# 執行點擊
toch.tap(element=element).perform()

TouchAction其他動作:

觸摸 (tap)

短按 (press)

長按 (long_press)

等待 (wait)

移動到 (moveTo)

釋放 (release)

執行 (perform)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM