智能终端界面自动化测试操作工具 - Appium常见用法

1. Appium 是什么可以做什么?

Appium 是一款开源的移动应用自动化测试框架,用于测试移动应用程序的功能和用户界面。它支持多种移动平台,包括 Android 和 iOS,可以使用多种编程语言进行脚本编写,如 Python、Java、JavaScript 等。

简单理解,Selenium是用于桌面系统的Web界面自动化测试框架,Appium是在智能终端,如Android Apple iPhone iPad等手机设备上,自动访问控制手机,在相关App上进行自动化测试操作。

2. Appium 依赖软件包安装

在使用 Appium 进行 Android 自动化测试之前,需要安装以下依赖软件和工具:

  1. Java Development Kit (JDK): Appium 是基于 Java 开发的,因此需要安装 JDK。你可以从 Oracle 官方网站下载适用于你的操作系统的 JDK 版本,并按照官方指南进行安装。

  2. Android SDK: Android SDK 提供了 Android 平台的开发工具和 API,用于构建和运行 Android 应用程序。你可以从 Android 开发者网站下载 Android SDK,并按照指南进行安装。

  3. Node.js: Appium 是使用 Node.js 编写的,因此需要安装 Node.js 运行环境。你可以从 Node.js 官方网站下载适用于你的操作系统的 Node.js 版本,并按照官方指南进行安装。

  4. Appium Server: Appium Server 是 Appium 的核心组件,用于驱动设备或模拟器,并提供与移动应用的通信接口。你可以从 Appium 官方网站下载 Appium Server,并按照指南进行安装。

  5. Appium Python 客户端库: 如果你选择使用 Python 编写 Appium 脚本,需要安装 Appium Python 客户端库。你可以使用 pip 命令在命令行中安装 Appium Python 客户端库,如下所示:

    pip install Appium-Python-Client

  6. Android 虚拟设备或真机: 为了运行和测试 Android 应用程序,你需要准备一个 Android 虚拟设备(模拟器)或连接一台 Android 真机设备,并确保设备已启用开发者选项和 USB 调试功能。

确保安装和配置正确后,你将能够开始编写和运行 Appium 脚本来自动化测试 Android 应用程序。

3. 启用Android设备的开发者选项和USB调试功能

开始编写自动化测试脚本之前,需要连接手机,启用 Android 设备的开发者选项和 USB 调试功能:

  1. 打开设备的设置(Settings):在 Android 设备上,滑动下拉通知栏,然后点击右上角的设置图标,或者在应用程序列表中找到并点击设置应用程序图标。

  2. 查找设备信息(About Phone 或 About Device):在设置中,向下滚动或浏览列表,找到 "关于手机" 或 "关于设备" (可能会有轻微的差异),然后点击进入该选项。

  3. 查找设备版本号:在设备信息中,查找 "版本号" 或 "软件信息"。通常,你需要点击 "版本号" 字段七次或更多次,直到出现一个提示表示开发者选项已经启用。

  4. 返回设置并找到开发者选项:返回到设置界面,在设置列表的末尾或在其他选项下,你将看到 "开发者选项"。点击进入该选项。

  5. 启用开发者选项:在开发者选项页面,找到并点击开关按钮或复选框,将其从 "关闭" 改为 "打开" 或 "启用"。这将启用开发者选项。

  6. 启用 USB 调试:在开发者选项页面,滚动或浏览列表,找到 "USB 调试" 选项,并勾选复选框以启用 USB 调试功能。

完成上述步骤后,你的 Android 设备将启用开发者选项和 USB 调试功能。现在你可以使用 Appium 或其他工具与设备进行连接,并进行 Android 自动化测试。请注意,不同的 Android 设备可能会有略微不同的界面和选项标签,但基本上遵循相似的步骤。

4. Appium常见用法

当使用 Appium 和 Python 进行移动应用自动化测试时,以下是一些常见的代码示例,涵盖元素定位、操作和断言等方面:

  1. 启动应用程序并连接到 Appium 服务器
python 复制代码
from appium import webdriver

desired_caps = {
    'platformName': 'Android',
    'deviceName': 'Android Emulator',
    'appPackage': 'com.example.app',
    'appActivity': 'com.example.app.MainActivity'
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
  1. 通过 ID 定位元素并进行点击操作
python 复制代码
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素出现
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((MobileBy.ID, 'com.example.app:id/button')))

# 点击按钮
element.click()
  1. 通过 XPath 定位元素并输入文本
python 复制代码
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素可见
wait = WebDriverWait(driver, 10)
text_input = wait.until(EC.visibility_of_element_located((MobileBy.XPATH, '//android.widget.EditText[@text="Username"]')))

# 输入文本
text_input.send_keys('John Doe')
  1. 滑动屏幕
python 复制代码
from appium.webdriver.common.touch_action import TouchAction

# 获取屏幕尺寸
screen_size = driver.get_window_size()
start_x = int(screen_size['width'] * 0.5)
start_y = int(screen_size['height'] * 0.8)
end_x = int(screen_size['width'] * 0.5)
end_y = int(screen_size['height'] * 0.2)

# 滑动屏幕
action = TouchAction(driver)
action.press(x=start_x, y=start_y).move_to(x=end_x, y=end_y).release().perform()
  1. 断言元素的文本内容
python 复制代码
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素出现
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((MobileBy.ID, 'com.example.app:id/text_view')))

# 断言文本内容
expected_text = 'Hello, Appium!'
actual_text = element.text
assert expected_text == actual_text

这些示例演示了常见的 Appium Python 代码用法,包括启动应用程序、定位元素、进行操作和断言验证。你可以根据具体的应用程序和测试需求进行相应的修改和扩展。请注意,这些示例中的元素定位方式和元素的标识符(如 ID、XPath)可能因应用程序的不同而有所变化,需要根据实际情况进行调整。

5. 简单代码示例 - 通过Chrome访问csdn

python 复制代码
from appium import webdriver
import time

# Appium服务器地址和设备配置
desired_caps = {
    'platformName': 'Android',
    'platformVersion': 'your_android_version',
    'deviceName': 'your_device_name',
    'browserName': 'Chrome',
}
appium_server = 'http://localhost:4723/wd/hub'

# 创建Appium WebDriver实例
driver = webdriver.Remote(appium_server, desired_caps)
driver.implicitly_wait(10)

# 打开Google Chrome浏览器并访问网址
print("打开Google Chrome浏览器")
driver.get('https://blog.csdn.net/')
time.sleep(2)

# 找到搜索框并输入关键字
print("在搜索框中输入关键字: Entropy-Go")
search_box = driver.find_element_by_id('search_input')
search_box.send_keys('Entropy-Go')

# 提交搜索表单
print("提交搜索表单")
submit_button = driver.find_element_by_id('search_button')
submit_button.click()
time.sleep(2)

# 打开搜索结果的第一个网页
print("打开搜索结果的第一个网页")
first_result = driver.find_element_by_css_selector('div.search-list-con > dl > dt > a')
first_result.click()
time.sleep(2)

# 关闭浏览器并退出
driver.quit()
相关推荐
Winston Wood2 小时前
Android Parcelable和Serializable的区别与联系
android·序列化
清风徐来辽2 小时前
Android 项目模型配置管理
android
帅得不敢出门2 小时前
Gradle命令编译Android Studio工程项目并签名
android·ide·android studio·gradlew
小白学大数据3 小时前
正则表达式在Kotlin中的应用:提取图片链接
开发语言·python·selenium·正则表达式·kotlin
problc3 小时前
Flutter中文字体设置指南:打造个性化的应用体验
android·javascript·flutter
2401_8658548812 小时前
iOS应用想要下载到手机上只能苹果签名吗?
后端·ios·iphone
帅得不敢出门13 小时前
安卓设备adb执行AT指令控制电话卡
android·adb·sim卡·at指令·电话卡
钱钱钱端14 小时前
【压力测试】如何确定系统最大并发用户数?
自动化测试·软件测试·python·职场和发展·压力测试·postman
我又来搬代码了15 小时前
【Android】使用productFlavors构建多个变体
android
测试199815 小时前
外包干了2年,快要废了。。。
自动化测试·软件测试·python·面试·职场和发展·单元测试·压力测试