1、Appium项目历史
Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。它支持IOS、Android及FirefoxOS平台。
Appium的前身是一个名为“iOSAuto”的项目,完全用C#编写,由一个名为Dan Cuellar的开发人员于2011年设计并实现。2012年8月,Cuellar和他的团队使用Apache2许可证将Appium作为开源产品发布。
到了2013年,Appium从一家领先的开发公司获得了资金,并由团队使用Node.js平台进行了完全重写和更新。项目开始几周后,Jonathan Lipps被指定为项目负责人。几天之后,该团队就有了一个新版本的Appium,该版本增加了以前版本所缺少的功能。
2014年,Appium获得了综合应用程序测试最佳开源软件奖。
Appium框架它是一个非常强大的工具,可用于跨各种平台自动测试移动和web应用程序。
参考资料
Appium官网:http://appium.io/ Appium GitHub主页:https://github.com/appium Appium官方论坛:http://discuss.appium.io/latest 官方中文文档:http://appium.io/docs/cn/about-appium/intro/ 开源项目兼容性矩阵:【Appium Python Client&Selenium binding&Python version】 https://pypi.org/project/Appium-Python-Client/
2、Appium 自动化原理
Appium 是一个开源自动化测试框架,用于对移动应用程序进行自动化测试。它支持 iOS 和 Android 平台,可以在多个设备和模拟器上进行测试。Appium 的设计目标是使移动应用程序的测试变得简单、灵活和可扩展。
2.1跨平台:
Appium 支持 iOS 和 Android 平台,可以在不同的设备和模拟器上进行测试。
2.2语言支持:
Appium 支持多种编程语言,包括 Java、Python、Ruby、C#、JavaScript 等,使得测试人员可以使用自己熟悉的编程语言进行测试。
2.3客户端驱动:
Appium 提供了一个客户端库,可以与测试框架进行通信。测试人员可以使用客户端库编写测试脚本,并将脚本发送到服务器进行执行。 简单易用:Appium 的 API 设计简单易用,使得测试人员可以快速上手并编写高效的测试脚本。
2.4可扩展性:
Appium 的架构可扩展,可以轻松地添加新的功能和测试库。 总之,Appium 是一个功能强大的自动化测试框架,适用于对移动应用程序进行全面、可靠的测试。
对于Android自动化,Appium主要有三个driver程序: Appium-android-driver:用于驱动UIAutomator1。 Appium-uiautomator2-driver:用于驱动UIAutomator2。 Appium-espresso-driver:用于驱动Espresso。
Appium 自动化方案的特点:
- 开源免费
- 支持多个平台
- iOS (苹果)、安卓 App 的自动化都支持。
- 支持多种类型的自动化
- 支持 苹果、安卓 应用 原生界面 的自动化
- 支持 应用 内嵌 WebView 的自动化
- 支持 手机浏览器 中的 web网站自动化
- 支持 flutter 应用的自动化
- 支持多种编程语言
- 像 Selenium 一样, 可以用多种编程语言 调用它 开发自动化程序。
2.5Appium通信原理:
Client端发送自动化指令给Appium server,Appium Server接收到client发送的指令后,转换为移动端能够识别的指令,然后发送给移动端设备,并对移动端设备进行操作。
3、appium生态工具
adb:Android的控制工具,用于获取Android的各种数据和控制 appium Desktop:内嵌套了appium server和Inspector的综合 appium server:appium的核心工具,命令行工具 appium clients:各种语言的客户端封装库,用于连接appium server Java、Python、Ruby、Robotframework-appium AppCrawler:自动遍历工具
4、运行原理
- 客户端(电脑)运行自动化测试脚本,该脚本使用Appium的WebDriver接口。
- 客户端可以是任何可以运行自动化测试脚本的设备,如电脑、平板电脑或手机。
- 自动化测试脚本使用Appium的WebDriver接口来与Appium服务器进行通信。
- 客户端将测试脚本和相关命令发送到服务器(Appium Server)。
- 客户端通过与Appium服务器的通信,将测试脚本和相关命令发送到服务器。
- 服务器接收来自客户端的命令,并将其转换为UIAutomator可以识别的命令。
- Appium Server接收到来自客户端的命令后,将这些命令转换为UIAutomator可以识别的命令。
- Appium服务器是一个中间件,它接收来自客户端的命令,并将其转换为UIAutomator可以识别的命令。
- 这个转换过程是基于Appium的协议和UIAutomator的能力进行的。
5、Appium环境安装:
在这次项目中我们为了满足自动化巡检功能,结合了Appium-windows-1.15.1.exe、androidsdk.zip、jdk-8u211-windows-x64.exe、python3.7.9、chromedriver-win64-119、selenium 4.10.0、appium-python-client2.10.0进行安装配置实现自动化测框架。
基础组件安装:
-
安装 selenium # pip install selenium==4.10.0 -i https://pypi.douban.com/simple/
-
安装 Chrome浏览器 # wget https://www.google.cn/chrome/
-
安装 Chrome Driver Chrome 115版本以后, Chrome Driver下载网站变了! Chrome driver现在的下载地址:https://googlechromelabs.github.io/chrome-for-testing/
Chrome 114以前的 版本访问下面的链接。 Chrome driver 老版的下载地址: https://chromedriver.storage.googleapis.com/index.html
第一步 安装appium桌面版客户端
# 执行windows-1.15.1.exe(Win10环境)
第二步 安装Appium-Python-Client (client编程库)
# pip install appium-python-client 或者用国内的源进行安装 pip install appium-python-client==2.10.0 -i https://pypi.douban.com/simple
第三步 安装JDK
# JAVA_HOME d:\tools\java\jdk1.8.0_211 安卓APP的自动化,必须要安装安卓SDK,而安卓SDK需要 JDK 环境。
第四步 安装Android SDK文件包 # 解压androidsdk.zip(Win10环境) 解压完成后,需要配置一下添加一个环境变量 ANDROID_HOME,设置值为sdk包解压目录,比如 d:\tools\androidsdk 配置环境变量PATH,加入adb所在目录, # d:\tools\androidsdk\platform-tools\
第五步 安装雷电模拟器 # 雷电模拟器ldinst_9.0.62.2.0.exe(Win10环境)
第六步 设置开发者模式,连接手机。 # 进入 手机设置 -> 关于手机 ,不断点击 版本号 菜单(7次以上),
第七步 启动Appium
点击启动会话
注意: Appium 2 的 find_element写法 注意:Appium Python 现在已经升级到 2.x 大版本,依赖 Selenium 4 以后, 下面这种 find_element_by* 方法都作为过期不赞成的写法 driver.find_element_by_id('username').send_keys('byhy') 运行会有告警,都要写成下面这种格式 from selenium.webdriver.common.by import By wd.find_element(By.ID, 'username').send_keys('byhy')
而后续还有 Appium独有的查找方式,比如 driver.find_element_by_accessibility_id('byhy') driver.find_element_by_android_uiautomator(code) 要改成
from appium.webdriver.common.appiumby import AppiumBy
driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'byhy') driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR, code)
这样也可以根据ID wd.find_element(AppiumBy.ID, 'username').send_keys('byhy')
Appium是一个C/S结构,就像我们浏览器访问网页,浏览器是客户端,通过操作发送请求服务器来获取数据。我们可以使用不同的客户端浏览器(IE,Firefox,Chrome)访问一个网站。Appium客户端可以使用不同的语言来实现,如Python,java等。具体详见下表: Language/Framework Github Repo and Installation Instructions Ruby https://github.com/appium/ruby_lib Python https://github.com/appium/python-client Java https://github.com/appium/java-client JavaScript (Node.js) https://github.com/admc/wd Objective C https://github.com/appium/selenium-objective-c PHP https://github.com/appium/php-client C# (.NET) https://github.com/appium/appium-dotnet-driver RobotFramework https://github.com/jollychang/robotframework-appiumlibrary
Appium 是一个非常流行的用于自动化测试移动应用的工具,它基于 WebDriver 协议与移动设备通信。然而,如果你想通过 Python 控制手机,而不想使用 Appium,还有其他一些方法可以考虑。
以下是一些不使用 Appium 来通过 Python 控制手机的替代方案:
ADB (Android Debug Bridge):
用途: 主要用于 Android 设备。你可以使用 ADB 来安装和调试应用,提供对各种设备操作的访问,如安装和卸载应用、重启设备、获取设备日志等。 Python 交互: 你可以通过 Python 的 subprocess 模块来执行 ADB 命令。 iOS 自动化:
Xcode + Instruments: Apple 提供了 Xcode 和 Instruments 工具,可以用来自动化 iOS 设备上的任务。你可以使用 Python 来调用这些工具。 libimobiledevice: 这是一个开源工具集,允许你与 iOS 设备进行通信,包括安装应用、管理设备上的文件等。 网络 API:
如果你的应用有暴露的网络 API,你可以使用 Python 的网络库(如 requests)来与之通信,从而间接控制手机。 第三方库:
有些第三方库,如 pyadb(针对 Android)或 python-ios-device(针对 iOS),为 Python 提供了更友好的接口来与移动设备进行交互。 蓝牙或 NFC:
如果你的应用支持通过蓝牙或 NFC 进行通信,你可以使用 Python 的蓝牙库(如 PyBluez)或 NFC 库来与手机交互。 使用厂商提供的 SDK 或 API:
一些手机制造商可能会提供 SDK 或 API,允许开发者通过编程方式控制手机。你可以查看你的手机制造商是否提供了这样的工具。 总的来说,虽然 Appium 是一个功能强大的工具,但它并不是唯一的选择。选择哪种方法取决于你的具体需求、目标平台和可用的资源。