一、Actions
执行一系列或多个键盘和指针(触摸、鼠标、触控笔)操作链
二、用法
定义 ActionChains 实例
定义输入源
定义动作
安装手势密码锁 app(TouchAction.apk)
打开应用
点击【设置手势】
完成手势操作(如图)
定义输入源:
actions.w3c_actions = ActionBuilder(self.driver, mouse=PointerInput(interaction.POINTER_TOUCH,"touch"))
按下:pointer_down()
抬起:release()
暂停:pause(时长)
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()