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()