appium之java API(2) -TouchAction

本文深入解析AppiumDriver中的TouchAction类,详细阐述其原理及常用方法,包括press、release、moveTo、tap、longPress等,通过实例演示手势操作的高效实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TouchAction


AppiumDriver的辅助类,主要针对手势操作,比如滑动、长按、拖动等。TouchAction的原理是讲一系列的动作放在一个链条中,然后将该链条传递给服务器。服务器接受到该链条后,解析各个动作,逐个执行。


press(WebElement el)


在控件上执行press操作。


press(int x, int y)


在坐标为(x,y)的点执行press操作


press(WebElement el, int x, int y)


在控件el的左上角的x坐标偏移x单位,y左边偏移y单位的坐标上执行press操作。


release()


释放操作,代表该系列动作的一个结束标志。


moveTo(WebElement el)


以el为目标,从另一个点移动到该目标上


moveTo(int x, int y)


以(x,y)点为目标,从另一个点移动到该目标上


moveTo(WebElement el, int x, int y)


以控件el的左上角为基准,x轴向右移动x单位,y轴向下移动y单位。以该点为目标,从另一个点移动到该点上。


tap(WebElement el)


在控件的中心点上敲击一下


tap(int x, int y)


在(x,y)点轻击一下


tap(WebElement el, int x, int y)


以控件el的左上角为基准,x轴向右移动x单位,y轴向下移动y单位。在该点上轻击。


waitAction()


代表一个空操作,等待一段时间


waitAction(int ms)


等待ms秒


longPress(WebElement el)


控件长按


longPress(int x, int y)


点长按


longPress(WebElement el, int x, int y)


偏移点长按


cancel()


取消执行该动作


perform()


执行该动作





### Appium Java-Client 使用教程 #### 1. Appium Java-Client 的基本概念 Appium 是一种开源工具,支持多种编程语言编写自动化测试脚本。其中 `java-client` 库是专门为 Java 开发者设计的客户端库,允许开发者通过 Java 编写针对移动应用的自动化测试脚本。 主要启动文件包括以下几个核心类[^3]: - **AppiumDriver.java**: 抽象类,提供与 Appium Server 进行通信的基础功能。 - **AndroidDriver.java**: 针对 Android 平台的具体实现类。 - **XCUITestDriver.java**: 针对 iOS 平台的具体实现类。 这些类继承自 `RemoteWebDriver` 类并扩展了其功能以适应移动端的需求。 --- #### 2. 下载和安装 Appium Java-Client 为了使用 AppiumJava 客户端,需要先下载对应的依赖库。推荐的方式是通过 Maven 构建工具管理项目依赖项。以下是 Maven 中央仓库中的最新版本声明: ```xml <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>7.6.0</version> <!-- 版本号可能随时间更新 --> </dependency> ``` 如果未使用 Maven,则可以从 JCenter 或其他镜像站点手动下载 `.jar` 文件,并将其添加到项目的构建路径中。例如,可以访问以下链接获取 jar 包: [https://mvnrepository.com/artifact/io.appium/java-client](https://mvnrepository.com/artifact/io.appium/java-client) 注意:从 v6.x 开始,部分 API 方法已被废弃或更改,因此建议查阅官方文档以确认最新的接口定义[^1]。 --- #### 3. 基础配置与初始化 在开始测试前,需设置 DesiredCapabilities 参数来指定设备平台和其他选项。下面是一个简单的示例代码片段展示如何连接至 Appium Server: ```java import io.appium.java_client.AppiumDriver; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.URL; public class AppiumTest { public static void main(String[] args) throws Exception { DesiredCapabilities caps = new DesiredCapabilities(); // 设置通用能力参数 caps.setCapability("platformName", "Android"); caps.setCapability("deviceName", "emulator-5554"); // 替换为实际设备名称 caps.setCapability("appPackage", "com.example.package"); caps.setCapability("appActivity", ".MainActivity"); URL serverUrl = new URL("http://localhost:4723/wd/hub"); AppiumDriver driver = new AppiumDriver(serverUrl, caps); System.out.println("Session started successfully."); } } ``` 上述代码展示了如何创建一个新的会话并与目标应用程序交互。 --- #### 4. 执行触摸动作 (Touch Actions) 随着 `java-client` 更新至 6.x 及以上版本,许多旧版方法被标记为已弃用,比如 `swipe()` 函数不再可用[^2]。取而代之的是更灵活的 `TouchAction` 对象及其关联方法。以下是如何执行滑动操作的一个例子: ```java import io.appium.java_client.TouchAction; import io.appium.java_client.android.AndroidDriver; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; public class SwipeExample { public static void main(String[] args) throws InterruptedException { // 初始化 AndroidDriver... WebElement elementToSwipeFrom = driver.findElement(By.id("element_id")); int startX = elementToSwipeFrom.getLocation().getX(); int startY = elementToSwipeFrom.getLocation().getY(); TouchAction touchAction = new TouchAction(driver); touchAction.press(startX, startY).waitAction(2000).moveTo(endX, endY).release().perform(); Thread.sleep(2000); // 等待两秒观察效果 } } ``` 此代码演示了一个基于屏幕坐标的简单滑动手势。 --- #### 5. 处理点击事件 对于单次点击或者长按某位置的操作,也可以借助于 `TouchAction` 实现。例如: ```java int centerX = screenDimensions.width / 2; int centerY = screenDimensions.height / 2; new TouchAction<>(driver).tap(PointOption.point(centerX, centerY)).perform(); // 上述语句实现了屏幕上中心区域的一次轻触行为。 ``` 更多高级手势可以通过组合多个基础动作完成复杂场景下的模拟输入。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值