java-client 升级后没法使用swipe方法,使用TouchAction进行封装

本文介绍了一个使用Java和Appium实现的滑动操作类,包括向上、向下、向左和向右四种滑动方式。通过计算屏幕尺寸并利用TouchAction进行滑动,适用于Android自动化测试。

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

import java.time.Duration;


import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.touch.WaitOptions;
import io.appium.java_client.touch.offset.PointOption;


public class SwipeClass {
    
    static Duration duration=Duration.ofSeconds(1);
    public void swipeToUp(AndroidDriver driver) {
        int width = driver.manage().window().getSize().width;
        int height = driver.manage().window().getSize().height;
        TouchAction action1=new TouchAction(driver).press(PointOption.point(width/2, height*3/4)).waitAction(WaitOptions.waitOptions(duration))
                                .moveTo(PointOption.point(width/2, height/4)).release();
        action1.perform();
    }


 
    public void swipeToDown(AndroidDriver driver) {
        int width = driver.manage().window().getSize().width;
        int height = driver.manage().window().getSize().height;
        TouchAction action2=new TouchAction(driver).press(PointOption.point(width/2, height/4)).waitAction(WaitOptions.waitOptions(duration))
                                .moveTo(PointOption.point(width/2, height*3/4)).release();
        action2.perform();
    }


    public void swipeToLeft(AndroidDriver driver) {
        int width = driver.manage().window().getSize().width;
        int height = driver.manage().window().getSize().height;
        TouchAction action3=new TouchAction(driver).press(PointOption.point(width*3/4, height/2)).waitAction(WaitOptions.waitOptions(duration))
                            .moveTo(PointOption.point(width/4,height/2)).release();
       action3.perform();
    }




    public void swipeToRight(AndroidDriver driver) {
        int width = driver.manage().window().getSize().width;
        int height = driver.manage().window().getSize().height;
        TouchAction action4=new TouchAction(driver).press(PointOption.point(width / 4, height / 2)).waitAction(WaitOptions.waitOptions(duration))
                                .moveTo(PointOption.point(width*3/4,height/2)).release();
        action4.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 为了使用 Appium 的 Java 客户端,需要先下载对应的依赖库。推荐的方式是通过 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、付费专栏及课程。

余额充值