导航

搭建Appium环境

Posted on 2024-04-25 14:50  蝈蝈俊  阅读(63)  评论(0编辑  收藏  举报

Appium 是一个开源工具,用于自动化 iOS、Android 和 Windows 应用程序的测试。

Appium 作为一个服务器启动,它接收到客户端(如脚本或测试代码)发出的命令,然后将这些命令转换成适当的动作在移动设备上执行。Appium的工作原理是通过使用WebDriver协议来与设备交互。

一、依赖安装:Node.js 和 npm

Appium 使用Node.jshttps://nodejs.org/en)开发,运行时系统要求也只是Node.jsnpm

https://appium.io/docs/en/latest/quickstart/requirements/

默认node.js安装时,会带npm,

默认安装在 C:\\Program Files\nodejs目录下。

我们不需要安装 Chocolatey ,如下图这一步不选。

二、安装 Appium

这个安装需要访问外网,如果要设置走代理,可以如下安装

npm config set proxy http://127.0.0.1:7897

npm config set https-proxy http://127.0.0.1:7897

只需下面命令,就可以完成安装Appium

# 安装
npm i -g appium
# 运行
appium
# 更新 Appium
npm update -g appium

三、安装 UiAutomator2 Driver

驱动程序(Driver)是一个允许 Appium 自动化特定平台的接口。

我们这里演示在 Android 平台的自动化,所以需要安装下面几个:

3.1、 Java JDK

下载地址:
https://adoptium.net/en-GB/temurin/releases/

安装完后,需要设置 JAVA_HOME 环境变量以指向 JDK 主目录。它将包含 bininclude 和其他目录。

3.2、Android SDK

我们这里不下载 Android Studio,而是下载 命令行工具。

下载地址在下面页面的最后部分。
https://developer.android.com/studio?hl=zh-cn#command-tools

下载后我们使用 sdkmanager 这个命令来下载对应版本的SDK:
https://developer.android.com/tools/sdkmanager?hl=zh-cn

注意,下载后的安装目录问题:

  • 将解压缩的 cmdline-tools 目录移至您选择的新目录,例如 android_sdk。这个新目录就是您的 Android SDK 目录。
  • 在解压缩的 cmdline-tools 目录中,创建一个名为 latest 的子目录。
  • 将原始 cmdline-tools 目录内容(包括 lib 目录、bin 目录、NOTICE.txt 文件和 source.properties 文件)移动到新创建的 latest 目录中。现在,您就可以从这个位置使用命令行工具了。

Android 11 对应的 API 级别是 30。你可以使用以下命令来安装 Android API 30 SDK

./sdkmanager "platforms;android-30" "build-tools;30.0.3"

安装完毕可以通过 sdkmanager --list_installed 命令来确认 SDK 是否成功安装

注意把 D:\android_sdk\platform-tools 工具的目录要放在 path 中,这样就可以直接使用adb这样的命令了。

另外还需设置 ANDROID_HOME 环境变量以指向Android SDK的安装目录。您通常可以在 Android Studio SDK 管理器中找到该目录的路径。它将包含 platform-tools 和其他目录。

3.3、连接真实设备

以小米手机为例,通过下面方式找到对应的android版本:

  1. 找到设置,点击进入。
  2. 点击我的设备。
  3. 点击全部参数。
  4. 找到Android版本。

基于这个版本,我们上面sdkmanager安装对应版本的开发工具。

如果使用真实设备,您应该将其设置为开发并启用 USB 调试。
注意:小米设备需要登录小米账号后才能开启“USB调试(安全设置)”

连接模拟器或设备后,您可以运行 adb devices (通常位于 $ANDROID_HOME/platform-tools/adb 的二进制文件)来验证您的设备是否显示为已连接。

3.4、安装驱动程序

由于 UiAutomator2 驱动程序由核心 Appium 团队维护,因此它有一个“官方”驱动程序名称,您可以使用该名称通过 Appium 扩展 CLI 轻松安装它:


# 安装
appium driver install uiautomator2

# 升级
npm install -g appium-uiautomator2-driver

3.5、检查

再次启动 Appium 服务器(运行 appium ),您应该看到新安装的驱动程序被列为可用:

四、python测试代码

首先安装依赖

pip install Appium-Python-Client

下面是滚动到电池选项界面的代码

import unittest
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

capabilities = dict(
    platformName='Android',
    automationName='uiautomator2',
    deviceName='Android',
    appPackage='com.android.settings',
    appActivity='.Settings',
    language='zh',
    locale='CN'
)

appium_server_url = 'http://192.168.1.5:4723'

class TestAppium(unittest.TestCase):
    def setUp(self) -> None:
        self.driver = webdriver.Remote(appium_server_url, options=UiAutomator2Options().load_capabilities(capabilities))

    def tearDown(self) -> None:
        if self.driver:
            self.driver.quit()


    def test_find_battery(self) -> None:
        # Use UIAutomator's UiScrollable to scroll to the "Battery" element
        scrollable = 'new UiScrollable(new UiSelector().scrollable(true).instance(0))'\
                     '.scrollIntoView(new UiSelector().textContains("电量").instance(0))'
        battery_element = self.driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, scrollable)
        
        # Click the Battery element once it is found and scrolled into view
        battery_element.click()

if __name__ == '__main__':
    unittest.main()

如果碰到安全限制问题,比如:

selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Potentially insecure feature 'adb_shell' has not been enabled. If you want to enable this feature and accept the security ramifications, please do so by following the documented instructions at http://appium.io/docs/en/2.0/guides/security/

可以参看:

http://appium.io/docs/en/2.0/guides/security/

最简单就是用下面方式启动:

appium --relaxed-security