swipe滑动操作,一般是两点之间的滑动,而实际使用过程中用户可能要进行一些多点连续滑动操作。如手势密码操作,切西瓜等场景。那么在Appium2中该如何模拟这类操作呢?
- W3C WebDriver actions
Appium2进行了一次重大更新,其中最重要的变化是弃用了MultiAction和TouchAction,并全面采用了W3C WebDriver actions。过去,MultiAction和TouchAction被广泛用于模拟复杂手势和多点触控操作,但现在W3C WebDriver actions成为了首选解决方案。这个决策带来了更统一、标准化的操作方式,同时也提供了更好的跨平台兼容性和稳定性。
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
actions = ActionChains(driver)
actions.w3c_actions = ActionBuilder(driver, mouse=PointerInput(interaction.POINTER_TOUCH, "touch"))
actions.w3c_actions.pointer_action.move_to_location(start_x, start_y)
actions.w3c_actions.pointer_action.pointer_down()
actions.w3c_actions.pointer_action.pause(1)
actions.w3c_actions.pointer_action.move_to_location(end_x, end_y)
actions.w3c_actions.pointer_action.release()
actions.perform()
方法一、在Appium Inspector获取坐标

方法二、在设备端开发者选项中开启指针位置获取坐标

from appium import webdriver
from appium.options.common.base import AppiumOptions
from appium.webdriver.common.appiumby import AppiumBy
from time import sleep
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
def create_driver():
"""连接Android手机,并运行随手记APP"""
options = AppiumOptions()
options.load_capabilities({
"automationName": "uiautomator2",
"platformName": "Android",
"platformVersion": "11",
"deviceName": "RK3399",
"appPackage": "com.mymoney",
"appActivity": ".biz.home.HomeActivity",
"unicodeKeyboard": "true",
"restKeyboard": "true"
appium_host = 'http://127.0.0.1:4723'
return webdriver.Remote(appium_host, options=options)
def close_driver(driver):
"""关闭驱动"""
if driver:
driver.quit()
if __name__ == "__main__":
driver = create_driver()
driver.implicitly_wait(10)
actions = ActionChains(driver)
actions.w3c_actions = ActionBuilder(
driver, mouse=PointerInput(interaction.POINTER_TOUCH, "touch"))
driver.find_element(AppiumBy.ID, "com.mymoney:id/ll_user").click()
actions.w3c_actions.pointer_action.move_to_location(950, 792)
actions.w3c_actions.pointer_action.pointer_down()
actions.w3c_actions.pointer_action.move_to_location(954, 432)
actions.w3c_actions.pointer_action.release()
actions.perform()
driver.find_element(AppiumBy.XPATH, '//*[@text="设置"]').click()
driver.find_element(AppiumBy.ID, 'com.mymoney:id/setting_right_tip').click()
sleep(0.5)
driver.find_element(AppiumBy.ID, 'com.mymoney:id/right_switch').click()
driver.find_element(AppiumBy.ID, 'com.mymoney:id/iv_gesture_psd').click()
for i in range(2):
actions.w3c_actions.pointer_action.move_to_location(806, 284)
actions.w3c_actions.pointer_action.pointer_down()
actions.w3c_actions.pointer_action.move_to_location(1107, 284)
actions.w3c_actions.pointer_action.pause(1)
actions.w3c_actions.pointer_action.move_to_location(806, 594)
actions.w3c_actions.pointer_action.pause(1)
actions.w3c_actions.pointer_action.move_to_location(1103, 585)
actions.w3c_actions.pointer_action.pause(1)
actions.w3c_actions.pointer_action.release()
actions.perform()
sleep(2)
close_driver(driver)
Appium 是一个开源的移动端自动化测试工具,支持 Android 和 iOS 应用的自动化测试。Appium 2 是 Appium 的最新版本,它带来了许多新特性和改进。在本教程中,我们将学习如何从零开始搭建 Appium 2 的手机自动化测试环境。
Appium V2 beta版本在2021年发布,从2022年1月1号开始,Appium核心团队不会再维护Appium 1.x版本了,所有近期官方发布的平台驱动(如Android平台的UIAutomator,IOS平台的XCUITest)不再兼容Appium 1.x,需要基于Appium V2版本。
让我们一起看看Appium V2相比Appium 1.x发生了哪些变化
自 2022 年 1 月 1 日起,Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x,需要 Appium 2 才能运行。
移动端自动化测试框架 Appium 开启了一个全新的项目 Appium 2.0 ,基本功能的转移正在紧锣密鼓的进行,并且已经发布了好几个 beta 版本。从上可以看到这个项目的完整文档,从可以看到 Appium2 移除的功能和新增的功能。
自 2022 年 1 月 1 日起,Appium 不再维护 Appium 1.x,官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x,需要 Appium 2 才能运行。开启了全新的Appium 2.0之旅。可通过查看Appium2 移除的功能和新增的功能。
最近,移动端自动化测试框架 Appium 开启了一个全新的项目 Appium 2.0 ,基本功能的转移正在紧锣密鼓的进行,并且已经发布了好几个 beta 版本。 GitHub 上可以看到这个项目近期所有的计划,大部分原有的功能已经完成,还有一些不太紧要的配置和文档工作正在进行。
Appium 2.0 的新能力
我个人对 Appium 2.0 非常看好,虽然现在像 airtest 这样的框架也很很好用,但是 Appium 2.0 试图打造的全新的跨平台测试生态还是非常吸引人的。 Appium 希望在 2.0