一、Actions
执行一系列或多个键盘和指针(触摸、鼠标、触控笔)操作链
二、用法
定义 ActionChains 实例
定义输入源
定义动作
安装手势密码锁 app(TouchAction.apk)
打开应用
点击【设置手势】
完成手势操作(如图)
定义输入源:
actions.w3c_actions = ActionBuilder(self.driver, mouse=PointerInput(interaction.POINTER_TOUCH,"touch"))
按下:pointer_down()
抬起:release()
暂停:pause(时长)
perform():执行
- 手势滑动步骤:
- 1、初始化ActionChains对象
- 2、找到起始元素:move_to_location(118,176)
- 3、按下:pointer_down()
- 4、滑动手指,找到第二个元素:move_to_location(355,176)
- 5、暂停1秒:pause(1)
- 6、滑动手指,找到第三个元素:move_to_location(595,416)
- 7、手指抬起:release()
- 8、执行:actions.perform()
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.actions.pointer_input import PointerInput
class TestActionChain:
def setup(self):
caps = {}
caps["platformName"] = "Android"
caps["deviceName"] = "127.0.0.1:7555 device"
caps["appPackage"] = "cn.kmob.screenfingermovelock"
caps["appActivity"] = "com.samsung.ui.FlashActivity"
caps["noReset"] = "true"
caps["ensureWebviewsHavePages"] = True
caps["automationName"] = 'uiautomator2' # todo 安卓工作引擎
self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
self.driver.implicitly_wait(8)
def test_action(self):
#设置手势
el1 = self.driver.find_element(by=AppiumBy.ID, value="cn.kmob.screenfingermovelock:id/patternTxt")
el1.click()
#定义ActionChains实例
actions = ActionChains(self.driver)
#定义输入源,声明是触碰操作
actions.w3c_actions = ActionBuilder(self.driver, mouse=PointerInput(interaction.POINTER_TOUCH,"touch"))
#定义动作 按下——》滑动——》抬起
actions.w3c_actions.pointer_action.move_to_location(118, 176)
actions.w3c_actions.pointer_action.pointer_down()
actions.w3c_actions.pointer_action.move_to_location(355, 176)
actions.w3c_actions.pointer_action.pause(1) #todo 暂停1秒
actions.w3c_actions.pointer_action.move_to_location(595, 176)
actions.w3c_actions.pointer_action.pause(1)
actions.w3c_actions.pointer_action.move_to_location(595, 416)
actions.w3c_actions.pointer_action.pause(1)
# 最有一个点
actions.w3c_actions.pointer_action.move_to_location(595, 650)
#抬起
actions.w3c_actions.pointer_action.release()
#执行
actions.perform()