TouchAction 类主要用于模拟手势操作,如点击、短按、长按、移动操作。
短按屏幕上的某个元素或某个坐标点,可以使用 TouchAction 中提供的 press() 方法
press(self, el=None, x=None, y=None)
注释:
长按操作,可以传定位的元素对象,也可以传坐标
el 是定位元素的对象
x,y是传坐标
duration是按住的持续时间,默认1000,单位是毫秒
 
注意:若短按的是元素,则仅需传参数给 el;
若短按的是坐标点,则需传参数给 x 和 y;
时间为非必填项,可填可不填。
例子:
# 导入模块TouchAction
from appium.webdriver.common.touch_action import TouchAction
el = self.driver.find_element_by_id("com.sina.weibo:id/titleSave")
TouchAction(driver).press(el,None,None,t).perform()
 长按手机上的某个按键,例如电源键、音量键、Home 键,调用 long_press_keycode() 方法
# 导入模块TouchAction
from appium.webdriver.common.touch_action import TouchAction
# 长按Home键
# long_press_keycode(value)    value:键盘对应的值
long_press_keycode(3)
 长按屏幕上某个元素或者某个点,需要使用 TouchAction 中提供的 long_press() 方法
下面为 TouchAction 类中的 long_press() 方法讲解:
def long_press(self, el=None, x=None, y=None, duration=1000):
注释:
长按操作,可以传定位的元素对象,也可以传坐标
el 是定位元素的对象
x,y是传坐标
duration是按住的持续时间,默认1000,单位是毫秒
 
注意: 若短按的是元素,则仅需传参数给 el;
若短按的是坐标点,则需传参数给 x 和 y;
时间为非必填项,可填可不填。
例子:
# 导入模块TouchAction
from appium.webdriver.common.touch_action import TouchAction
el = self.driver.find_element_by_id("com.sina.weibo:id/titleSave")
TouchAction(driver).long_press(el,None,None,t).perform()
 模拟从一个点移动到指定元素或指定点
move_to(self,el=None,x=None,y=None)
注释:
若移动到的目标为元素,则仅需传参数给el即可;
若移动到的目标为坐标点,则需传参数给x和y
 release()
#通过将指针离开屏幕(释放指针)来结束动作
perform()
#通过向服务器发送命令来执行动作
 MultiTouch 类主要用于多点触控操作,主要有两种操作,分别为 add() 和 perform()
添加 TouchAction 对象到 MultiAction 对象
from appium.webdriver.common.multi_action import MultiAction
from appium.webdriver.common.touch_action import TouchAction
# 初始化TouchAction对象
action1 = TouchAction(self.driver)
action2 = TouchAction(self.driver)
# 添加TouchAction对象到MultiAction中
MultiAction.add(action1, action2)
 执行储存在对象中的所有动作
MultiAction.add(action1, action2).perform()
 
例子:
先获取屏幕大小:
def get_screen_size(self):
        # 获取屏幕大小
    window_size = self.driver.get_window_size()
    x = window_size['width']
    y = window_size['height']
    return x, y
 
放大操作:
# 放大
def zoom(self):
    x, y = self.get_screen_size()
    # 初始化MultiAction对象
    add_action = MultiAction(self.driver)
    # 初始化TouchAction对象
    action1 = TouchAction(self.driver)
    action2 = TouchAction(self.driver)
    # 执行短按操作,并移动坐标点,最后通过release释放坐标点来结束动作
    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()
    # 添加TouchAction对象到MultiAction中
    add_action.add(action1, action2)
    # perform()通过向服务器发送命令来执行动作
    print("start zoom!")
    add_action.perform()
 
缩小操作:
# 缩小
def shrink(self):
    x, y = self.get_screen_size()
    # 初始化MultiAction对象
    add_action = MultiAction(self.driver)
    # 初始化TouchAction对象
    action1 = TouchAction(self.driver)
    action2 = TouchAction(self.driver)
    # 执行短按操作,并移动坐标点,最后通过release释放坐标点来结束动作
    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()
    # 添加TouchAction对象到MultiAction中
    add_action.add(action1, action2)
    # perform()通过向服务器发送命令来执行动作
    print("start shrink!")
    add_action.perform()
 
以上内容有错误的地方,大家多多指正,谢谢!