Appium 集成
与 Appium 的集成使您能够利用 Digital Lab 的功能运行 Appium 脚本。
准备环境
要准备运行自动化 Appium 测试的环境,需要配置工作环境 (如 Visual Studio 或 Eclipse) 以识别 Appium 项目。

要使用 Appium 设置 Visual Studio 环境,请执行以下步骤:
- 创建在 Visual Studio 中的新单元测试项目。
- 右键单击解决方案资源管理器中的引用,然后选择添加管理 Nuget 包。
- 搜索 (对于 Appium Webdriver) ,然后单击安装。这将更新引用以包括 Appium 驱动程序。
- 搜索表示“ Selenium WebDriver ”,然后单击安装。这将更新引用以包括 Selenium 驱动程序。
- 实例化 Appium Web 驱动程序。
- 按 Digital Lab Appium 功能中所述设置所需的功能。

要设置 Eclipse 环境,请执行以下步骤:
-
下载以下项的最新归档文件:
-
Selenium WebDriver Java 客户端
-
用于 Appium Mobile WebDriver 的 Java 客户端
-
- 提取下载的归档文件的内容。
- 在 Eclipse 中,选择 Appium 项目,然后从右键菜单中选择选择属性。
- 单击 (位于 Java 内部版本路径节点上) ,然后选择库选项卡。
-
在添加外部 JAR 上单击并添加下载的 JAR,一次一个:
-
从 Selenium Java 客户端下载中提取的 Java-clientjar 文件
-
提取的 Selenium 客户端下载的 libs 文件夹中的 jar 文件
-
从 Java - Client for Appium 下载中提取的 Java-clientjar 文件
-
- 单击确定以关闭属性对话框。
准备 Appium 测试
准备要在 Digital Lab 上运行的 Appium 测试:
-
在启动会话的代码中,使用以下格式将 Appium 服务器 URL 和端口替换为 URL 和端口 Digital Lab (有关示例,请参阅下文):
driver = new AndroidDriver (new URL ("http://<my Digital Lab Server>:<port>/wd/hub") , capabilities) ;
driver = new IOSDriver (newURL (" http: //< my Digital Lab 服务器 >:<port>/wd/hub") ,capabilities) ;
-
通过将应用程序上载到 Digital Lab,使其可用于测试。有关详细信息,请参阅管理应用程序。
注: 在 iOS 设备上安装应用程序不需要 Mac 计算机。
Appium 脚本执行
运行 Appium 测试时应考虑以下准则:
-
匿名运行 Appium 测试时,会将用户分配到默认工作区。有关详细信息,请参阅实验室和工作区管理。Appium 匿名访问不能与 LDAP 一起使用。
UFT Digital Lab 版本 24.2 和 ValueEdge Digital Lab: Appium 匿名访问不受支持。 -
Linux 和 Windows 不支持 Safari 驱动程序。
-
通过 Digital Lab 运行 Appium 测试时,可以指示在脚本执行期间使用的自动化方法。
OS 详细信息 iOS Digital Lab 使您可以在 iOS 设备上运行测试,而无需使用 Mac 计算机。用于 iOS 的自动化方法是 XCUITest。 Android 8 及更高版本 UiAutomator2 是默认的自动化引擎。uiAutomator2 驱动程序使用 Google 的 UiAutomator2 技术在设备或仿真器上实现自动化。要覆盖默认值并使用 UiAutomator1,请将 automationName Appium 功能设置为 " android"。
将 Appium 与 SSL 配合使用
要使用采用 SSL 的 Appium 和 Digital Lab, Appium 客户端需要信任 UFT Digital Lab 证书。
如果 SSL 证书不由已知的认证机构签署 , 请执行以下操作:
Appium 客戶 | 程序 |
---|---|
Appium 检察官 |
|
其他人 |
出口 Digital Lab 证书 , 并设置 Appium 客户端以信任它 (推荐)。否则 , 设置客户端忽略 SSL 警告。有关导出证书的详细信息,请参阅 SSL 和证书。 |
Appium 设置代码段
以下代码段显示了 Android 本机个应用程序、 Chrome、iOS 本机个应用程序和 iOS Safari 的示例设置。必须填写粗体行。
有关 Digital Lab 中的常用功能及其支持的列表,请参阅 Digital Lab Appium 功能。
重要信息: 这些代码段使用 Java 客户端 v7.x。如果您想使用 v8 或更高版本,请参阅关于 github 的官方 Java 客户端迁移指南。有关其他代码示例,请参阅 UFTM github 存储库。

DesiredCapabilities = new DesiredCapabilities () ;
abilities.setCapability (" platformName" ,"Android") ;
abilities.setCapability (" oauthClientId" ," oauth2-...") ;
abilities.setCapability (" oauthClientSecret" ," ke1SUI … ") ;
abilities.setCapability (" appPackage" ," com.Advantage.aShopping") ;
abilities.setCapability (" appActivity" ," com.Advantage.aShopping.SplashActivity") ;

DesiredCapabilities = new DesiredCapabilities () ;
abilities.setCapability (" platformName" ,"Android") ;
abilities.setCapability (" oauthClientId" ," oauth2-...") ;
abilities.setCapability (" oauthClientSecret" ," ke1SUI … ") ;
abilities.setCapability (" browserName" ," chrome") ;

DesiredCapabilities = new DesiredCapabilities () ;
abilities.setCapability (" platformName" ,"iOS") ;
abilities.setCapability (" oauthClientId" ," oauth2-...") ;
abilities.setCapability (" oauthClientSecret" ," ke1SUI … ") ;
abilities.setCapability (" bundle Id" ," com.Advantage.aShopping") ;

DesiredCapabilities = new DesiredCapabilities () ;
abilities.setCapability (" platformName" ,"iOS") ;
abilities.setCapability (" oauthClientId" ," oauth2-...") ;
abilities.setCapability (" oauthClientSecret" ," ke1SUI … ") ;
abilities.setCapability (" browserName" ," safari") ;
有关其他代码示例,请参阅 Appium 代码示例 - Java 和 Appium 模拟。
常见 Appium API 调用
使用以下 Appium API 调用管理应用程序。
终止应用程序
Kill API 调用将停止应用程序。它不只是最小化应用程序,而是终止进程。脚本名称为 mc: application: kill,必须使用以下参数之一:
-
appPackage(Android) 或 bundleId(iOS)
-
id 或 uuid,如 REST API 参考 Digital Lab - 应用程序安装/卸载中所使用。
功能 | 详细信息 |
---|---|
appPackage | Androidonly。 标识应用程序的软件包名称,在应用程序详细信息卡中显示为包 ID。例如 com.Advantage.aShopping |
bundle ID | 仅 iOS。 唯一标识符,应用程序的 BundleID,在应用程序详细信息卡中显示为包 ID。例如 com.mf.iShopping |
ID | 应用程序标识符 (字符串) 。例如: com.mf.iShopping。 |
uuid | 通用唯一标识符 (UUID) 。这是 Digital Lab 分配的唯一应用程序特定 ID。例如,“ bf441f2b - 3f16- 4bb5- 950d-4e3eaf2efffb ”。 |
以下示例代码终止 AndroidAdvantage 应用程序:
Map<String, Object> params = new HashMap<String, Object>();
params.put("appPackage", "com.Advantage.aShopping");
appiumDriver.executeScript("mc:application:kill", params);
以“ params.put ”开头的行可以替换为以下任一选项:
-
params.put (" bundle Id" ," com.mf.iShopping") ;
-
params.put (" uuid" ," bf441f2b-3f16- 4bb5- 950- 4e3eaf2efffb") ;
-
params.put (" id" ," com.Advantage.aShopping") ;
有关其他代码示例,请参阅 Appium 代码示例 - Java 和 Appium 模拟。
Network virtualization 功能
请参见 Network Virtualization 帮助中心为如何在 Digital Lab 中添加网络虚拟化功能的示例。
检索 Appium 日志
在执行 Appium 测试期间会生成一个日志文件。
要检索日志,请使用 mc-wd: downloadLogs 脚本并指定编码。
当连接器收到此命令时,将检索当前 Appium 进程中所有会话的日志。将字符串附加到响应正文。
Appium 用户的测试代码使用响应正文中的字符串并相应地对其进行处理。
例如:
HashMap < String ,String > encoding = new HashMap < String ,String > () ;
encoding.put (" encoding" ," UTF-8") ;
String logFileContents = (String) wd.executeScript (" mc-wd: downloadLogs" ,encoding) ;
有关其他代码示例,请参阅 Appium 代码示例 - Java 和 Appium 模拟。
并行测试
可以在 Digital Lab 上运行并行 Appium 和 Selenium 测试。
您可以通过编码或使用配置项 (持续集成) 工具 (如 Jenkins) 来实现此目的。关于在 Jenkins 中运行并行测试的示例,请参阅 Jenkins Wiki 中的 Parallel Test Executor 插件。
另请参阅: