如何为 Android 自动化设置 Appium 环境?
Posted
技术标签:
【中文标题】如何为 Android 自动化设置 Appium 环境?【英文标题】:How to setup Appium Environment for Android Automation? 【发布时间】:2013-07-25 13:56:38 【问题描述】:我在测试中担任 SD。我是 Appium 自动化工具的新手,这个工具对我来说设置环境非常棘手。
我参考了以下链接:http://unmesh.me/category/appium/
这个链接帮助我通过命令行安装Node.js
和appium。但我不确定这是正确的做法。
我从命令行收到以下消息:
mani-kandans-MacBook-Pro:platform-tools manikandan$ info: Welcome to Appium v0.8.2 (REV e9cc66197ad6a3496322bd77a8699509fc761b69)
info: Appium REST http interface listener started on 0.0.0.0:4723
info - socket.io started
在这之后我没有任何想法。如何编写测试用例并通过 Appium 运行?
如果您有兴趣分享有关 Appium 工具的知识。请指导我。
-
如何安装 Appium?
如何通过 Appium 工具运行测试用例?
【问题讨论】:
你想用什么来写你的测试?红宝石?爪哇?您是通过移动 safari 和 chrome 测试网络应用还是测试原生应用? 首先,我要对迟到的重播表示抱歉。我正在用python和Java编写测试用例,我们的设置环境已经完成。现在我们面临着其他一些障碍,比如多设备支持并在 2.x 设备中运行测试用例。你能帮我们这些拦截器吗?谢谢。 你可以参考我的这个博客:softwareqablogger.blogspot.in/2015/12/…希望对你有帮助。 【参考方案1】:第一部分:-。您似乎已经使用 node server.js 启动了 appium 服务器
- 您可以通过在浏览器中转到localhost:4723/wd/hub/status
来检查服务器,这将返回服务器的一些详细信息。你已经这样做了。
确认服务器已启动的命令输出将如下所示:
info: Welcome to Appium v0.8.1 (REV ***********************************)
info: Appium REST http interface listener started on 0.0.0.0:4723
info - socket.io started
第二部分:-。接下来,您将 selenium RC 用于 Python、Java 或 c# 或任何您选择的语言。我使用了 c#,并且可以提供示例,这应该与您的测试类似。
要将 selenium 添加到 c# 类:using OpenQA.Selenium.Remote;
您将所有数据传递给 selenium 所需的功能对象。
存在一些自定义所需的功能,例如:
“设备 ID”将您连接的设备或 AVD 带到命令和应用程序,该命令和应用程序将具有您要安装的 apk 的本地路径。这是在启动时签名并安装的,如果已经存在已退出的应用程序,它将为您跳过此操作。
DesiredCapabilities caps = new DesiredCapabilities();
caps.SetCapability("app-package", "com.myapp.test");
caps.SetCapability("browserName", "");
caps.SetCapability("device", "Android");
caps.SetCapability("app-activity", "com.myapp.SplashActivity");
caps.SetCapability("takesScreenshot", true);
caps.SetCapability("version", "4.1.2");
caps.SetCapability("device ID", "uniquedeviceid");
caps.SetCapability("app", @"C:\path to\app\on\pc\app.apk");
根据您创建的功能创建一个远程 Web 驱动程序对象,传递您使用的中心 URL,例如 http://localhost:4723/wd/hub
和您创建的所需功能。
RemoteWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4723/wd/hub/"), caps);
这一行使用 Appium 服务器的 ip 或主机开始监听请求。 对我来说,这一步标志着在连接的设备上安装和启动应用程序,希望这对你同样有效。 这是您编写的 selenium 测试连接到 Appium 服务器的地方。
现在使用创建的driver
对象,您可以访问Selenium rc 命令,其中Appium 已经为android 测试实现了许多替代方案。
在这些过程中,您的 Appium 服务器控制台窗口应该会向您显示是否有任何问题。
输出将采用颜色编码,以帮助识别此窗口中的故障,但您可以按照自己的方式处理这些故障,并在需要时输出到文件。
多设备更新 我不确定是否使用多个设备,我会考虑 selenium grid 我之前尝试将 2 个设备添加到一台机器并且测试有混淆,无论配置和命令中的设备 ID 是什么,adb 都无法区分。 Appium 团队一直在改进向服务器添加网格功能,我建议您查看Appium Grid(链接已更新)
对于我缺乏网格方面的经验来进一步帮助您,我深表歉意。
问候,布赖恩
【讨论】:
非常感谢您的帮助。根据您的指示,我已完成 Android 的 Appium 设置。现在我想使用 appium 运行多个设备。请帮帮我。 我已经更新了我的示例,详细介绍了扩展多设备支持,不幸的是我还没有自己处理这个问题,所以我的经验只是理论上的。我提供了指向您可能会发现可以解决您的扩展计划的工具的链接。 @Manidroid 请针对多个设备发布不同的问题。【参考方案2】:似乎回复晚了,但我想这篇文章仍然可以帮助一些正在寻找逐步指南在Windows平台上安装Appium的人
http://qaautomationworld.blogspot.in/2014/12/appium-setup-for-android-windows.html
此链接主要涉及以下部分
-
JDK 安装
Android SDK 安装路径设置
Appium 安装
a) 使用 node.js
b) 使用 Appium.exe
【讨论】:
【参考方案3】:这是我的 appium android 的 env.rb 文件。
require 'rubygems'
require 'appium_lib'
# Start Android driver
apk =
device: :android,
app_path: (true && ENV['apk']) || 'path to apk',
app_package: (true && ENV['package']) || 'com.foo.cam',
app_activity: (true && ENV['activity']) || '.SplashActivity',
app_wait_activity: (true && ENV['activity']) || '.MainActivity',
Appium::Driver.new(apk).start_driver
Appium.promote_appium_methods Object
log = Logger.new(STDOUT)
case ENV['log']
when 'WARN'
log.level = Logger::WARN
when 'DEBUG'
log.level = Logger::DEBUG
when 'INFO'
log.level = Logger::INFO
when 'ERROR'
log.level = Logger::ERROR
when 'FATAL'
log.level = Logger::FATAL
when 'UNKNOWN'
log.level = Logger::UNKNOWN
else
log.level = Logger::DEBUG
end
log.debug('starting suite')
Before do
@test_env =
device: driver,
main_activity: (true && ENV['main_activity']) || 'grid.GridLoginActivity',
logger: log
end
# Optional--clears alerts
After ('@rate_limit') do |scenario|
log = @test_env[:logger]
device = @test_env[:device]
if scenario.failed?
begin
wait = Selenium::WebDriver::Wait.new :timeout => 1
wait.until device.alert_accept
log.debug('cleared rate limit dialog')
rescue
log.error("dialog didn't pop.")
end
end
log.debug('rate_limit finished')
end
After ('@network_connection') do |scenario|
log = @test_env[:logger]
device = @test_env[:device]
if scenario.failed?
begin
wait = Selenium::WebDriver::Wait.new :timeout => 1
wait.until device.alert_accept
log.debug('cleared network connection issue')
rescue
log.error("dialog didn't pop.")
end
end
log.debug('network_connection finished')
end
【讨论】:
【参考方案4】:首先安装 Appium 下载所需工具:
-
Android 工作室
适用于 Java 的 Appium Jar 文件
Java Selenium 客户端插件
Appium 服务器
Java SDK
下载所有这些工具后,请按照此博客中提到的分步流程进行操作:
Installation Process of Appium in Android Studio
【讨论】:
【参考方案5】:在这里,我试图解释完整的端到端设置指令,以使用 Appium 配置和运行 Android 移动自动化测试用例
Download Java and set Java_Home in environmental variables
Download Android STUDIO from below link
https://developer.android.com/studio/index.html
Check Android installation path in Machine
Set Android_Home Environmental variables path to SDK location and include bin folder paths in PATH variable
Open Android Studio and configure Virtual device/Emulator
Open Emulator and check if it is working.
Download Node.js
https://nodejs.org/en/download/
Set Node_Home Environmental variables path
Set npm Environmental variables path
Download Appium Server from Node
Download Appium and Selenium Java client library
Install Eclipse – Create a Project in Eclipse - configure Appium libraries
Add All dependencies
//You can download any node module only using npm
npm install – g appium – Latest Stable release version 1.16.0 – Android 10+ version
npm uninstall -g appium // g stands for global
Appium – starts the server
【讨论】:
以上是关于如何为 Android 自动化设置 Appium 环境?的主要内容,如果未能解决你的问题,请参考以下文章