ADB(Android Debug Bridge)和Appium是两种不同用途的工具,它们在自动化和测试Android设备中扮演着不同的角色。
ADB (Android Debug Bridge)
ADB是一个多功能命令行工具,它允许开发人员与连接的Android设备进行通信。ADB是Android SDK的一部分,可以用于各种开发和调试目的,如安装和调试应用程序、访问设备shell、传输文件、获取设备日志等。
Appium
Appium是一个开源的、跨平台的自动化测试框架,用于自动化iOS和Android应用程序的测试。Appium实现了WebDriver协议,并允许使用标准的WebDriver客户端与移动应用程序进行交互,就像测试网页应用程序那样。Appium支持编写用于原生应用、移动Web应用和混合应用的自动化脚本。
它们的不同:
用途: ADB主要是作为一个调试工具,而Appium则专注于提供自动化测试的能力。
功能: ADB提供了更底层的设备控制和命令执行功能,而Appium提供了一套高级的API来模拟用户行为和测试用例。
用户界面: ADB是命令行工具,而Appium测试通常是编写在代码文件中并且通过Appium服务器执行。
WebDriver协议: Appium遵循WebDriver协议,让测试脚本能够与移动端应用程序的元素进行交互,而ADB没有这样的协议支持。
它们的关系:
配合使用: 在许多情况下,Appium测试可能会与ADB命令配合使用。例如,在启动Appium测试之前,可能会用ADB来清理应用数据或将应用安装到设备上。
先决条件: 为了让Appium正常工作,往往需要先确保ADB能够成功连接到Android设备。这意味着,在运行Appium测试之前,通常需要使用ADB命令来检查设备是否已经正确连接到PC。
使用场景:
只使用ADB: 如果你只是需要安装应用、传输文件、获取日志或执行一些简单的命令,使用ADB就足够了。
只使用Appium: 如果你需要进行复杂的自动化测试,比如模拟用户行为、执行端到端的测试,你会选择使用Appium。
先使用ADB,后使用Appium: 在测试自动化的实际操作中,通常会先使用ADB来准备测试环境(如安装测试应用),然后使用Appium来编写和执行自动化测试脚本。
总的来说,ADB和Appium通常是互补的工具,它们可以根据不同的需求和测试场景相结合使用。
使用 Appium 实现类似的功能,需要首先设置 Appium 服务器和相应的环境。以下是使用 Appium 和 Python 客户端库编写的示例代码,实现在安卓设备上自动打开浏览器、输入网址并访问的过程:
# -*- coding: utf-8 -*-
"""
Created on Sat Mar 23 18:02:51 2024
@author: SavingKing
"""
from appium import webdriver
import time
# Appium 服务器启动的 desired capabilities
desired_caps = {
'platformName': 'Android', # 平台名称
'platformVersion': '10.0', # 平台版本, 根据实际设备更改
'deviceName': 'Android Emulator', # 设备名称, 根据实际设备更改
'browserName': 'Chrome', # 浏览器名称,这里是 Chrome
'chromedriverExecutable': '/path/to/chromedriver' # 如果需要,提供 chromedriver 的路径
}
# 连接 Appium 服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 适当等待页面加载
driver.implicitly_wait(10)
# 打开网页
driver.get("https://savingking.com.tw")
# 等待网页加载完成
time.sleep(5)
# 在这里可以添加更多与页面交互的操作,例如点击按钮、填写表单等
# 结束测试,关闭会话
driver.quit()
这个脚本首先设置了设备和 Appium 服务器的配置(desired capabilities),然后连接到 Appium 服务器并打开 Chrome 浏览器。接着,使用 get 方法打开指定的网址,最后关闭会话。
注意,因为这个脚本是直接在浏览器中打开网站,所以不需要像 pyautogui 那样寻找屏幕上的图像位置。Appium 提供了更多的方法来直接与应用程序的 UI 元素进行交云,例如通过元素的 ID、类名或 XPath 等定位元素。
在初始配置中,chromedriverExecutable 是可选的,如果 Appium 服务器能够自动找到合适版本的 ChromeDriver,那么可以省略这一项。根据你的 Android 设备和 Chrome 版本,你可能需要下载对应版本的 ChromeDriver 并指定路径。
请根据您的实际环境(如设备的 Android 版本、设备名称和 ChromeDriver 路径)调整代码中的配置。此外,确保您的 Appium 服务器正在运行,并且所有的环境依赖(如 Appium 的 Python 客户端、Android SDK 和 ChromeDriver)都已正确安装。
推薦hahow線上學習python: https://igrape.net/30afN
pyautogui 是一个 Python 库,它用于自动化桌面操作系统的图形用户界面。它可以模拟鼠标和键盘操作,但它是为桌面环境设计的,不能直接与连接到计算机的手机交互。
如果你想要在手机上自动化任务,你需要使用专门为手机操作系统(如 Android 或 iOS)设计的工具。对于 Android 设备,你可以使用下面的方法之一:
ADB (Android Debug Bridge):
通过 ADB,你可以连接电脑和 Android 设备,并发送触控命令。例如,使用 adb shell input tap x y 命令可以模拟在屏幕坐标 (x, y) 处的触控操作。
Appium:
Appium 是一个自动化测试工具,它可以用于自动化所有种类的移动应用。它允许你编写跨平台的测试脚本来模拟用户与应用的交互。
Android Instrumentation:
如果你是开发者,你可以使用 Android 的 Instrumentation 框架来编写测试脚本,这些脚本可以在 Android 设备上执行。
其他自动化应用:
像前面提到的 Automate 应用,或者 Tasker、MacroDroid 等,这些应用可以在手机上创建自动化任务,而无需电脑干预。
如果你确实需要从电脑控制手机,你可能需要将手机上的操作映射到电脑上,然后使用 pyautogui 或其他自动化工具来控制这些映射后的操作。例如,某些软件允许你在电脑上显示和控制连接的 Android 设备屏幕(例如 Scrcpy),这时候 pyautogui 就能用来控制在电脑屏幕上映射的手机界面。
scrcpy 是一个非常实用的应用程序,它允许你通过 USB(或通过TCP/IP也可以)将Android设备的屏幕显示在电脑上,并完全控制它。这意味着你可以在电脑上看到你的手机屏幕,并且可以使用鼠标和键盘来控制你的手机。scrcpy 不需要root权限,它的操作非常简单,传输效率高,响应速度快。
要使用 scrcpy 控制你的Android设备,你需要按照以下步骤操作:
启用开发者选项和USB调试:
在手机上进入到“设置”。
找到“关于手机”,连续点击“构建编号”7次以启用开发者模式。
返回到设置菜单,找到“开发者选项”,启动它,并启用“USB调试”。
安装scrcpy:
scrcpy 可以在不同的操作系统上运行,包括 Windows、macOS 和 Linux。你可以从它的GitHub页面下载预编译的版本,或者通过包管理器安装它(例如,在Debian或Ubuntu上,你可以使用apt):sudo apt update
sudo apt install scrcpy
连接你的手机:
使用USB数据线将你的手机连接到电脑。如果是第一次连接,你的手机会弹出一个窗口让你允许USB调试,需要选择“是”。
运行scrcpy:
在电脑上打开终端(或命令提示符),然后输入scrcpy并回车。scrcpy
这时,你的手机屏幕应该会显示在电脑屏幕上。