Appium(二)---启动App+模拟滑动

本文介绍如何使用Appium在真实设备上启动并自动化操作抖音App。通过设置DesiredCapabilities参数,如platformName、deviceName、appPackage和appActivity,实现在乐视1s手机上启动抖音App,并通过代码实现无限滑动视频列表的功能。

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

  环境搭建好了,就可以实现基本的操作,比如启动App和模拟滑动。这里我实现的是在真机(乐视1s)上启动抖音App,并滑动抖音的视频列表,代码如下:

from appium import webdriver
from time import sleep

class Action():
    def __init__(self):
    # 初始化配置,这里设置的是乐视1s手机的Desired Capabilities参数
        self.desired_caps = {
            "platformName":"Android",
            "deviceName":"7L4599ZDHAWOU88L",
            "appPackage":"com.ss.android.ugc.aweme",
            "appActivity":".main.MainActivity"
        }
        # 指定Appium Server
        self.server = 'http://localhost:4723/wd/hub'
        # 新建一个Session
        self.driver = webdriver.Remote(self.server, self.desired_caps)
        # 设置滑动初始坐标和滑动距离
        self.start_x = 500
        self.start_y = 1500
        self.distance = 1300
    def comments(self):
        sleep(10)
        # app开启之后点击一次屏幕,确保页面的展示
        self.driver.tap([(500, 1200)], 500)  #appium中模拟手指点击方法,叫tap,有两个参数,元素位置和点击持续时间ms
    def scroll(self):
        # 无限滑动
        while True:
            # 模拟滑动
            self.driver.swipe(self.start_x, self.start_y, self.start_x,self.start_y-self.distance,300)
            # 设置延时等待
            sleep(1)
    def main(self):
        self.comments()
        self.scroll()
if __name__ == '__main__':
    action = Action()
    action.main()

运行效果:

注意:

1.一定要先开启appium-desktop,连接上服务器才可以启动App!

2.appium-desktop上的坐标点位置如下:

3.app的Desired Capabilities参数,分别是paltformName、deviceName、appPackage、appActivity:

  platformName:平台名称,一般是Android或iOS.

  deviceName:设备名称,手机的具体类型

  appPackage:App程序包名

  appActivity:入口Activity名,通常以.开头

  platformName和deviceName比较容易获得,而appPackage和appActivity这两个可以通过以下方法获取到。在控制台上输入   adb logcat>D:\log.log  命令,并且在手机打开抖音app,然后在D盘中打开log.log文件,查找Displayed关键字。

由上图可以知道Displayed后面的 com.ss.android.ugc.aweme对应的是appPackage,.main.MainActivity对应的是appActivity。

参考:https://www.cnblogs.com/stevenshushu/p/9635097.html

4.要解决appium每次运行都需要安装Unlock以及AppiumSetting的问题可以参考:

https://blog.youkuaiyun.com/hszxd479946/article/details/78900982

### 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、付费专栏及课程。

余额充值