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