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 Android 驱动程序 (newURL("http : //<my Digital Lab 服务器>: <port>/wd/hub"),capabilities);
driver = new IOSDriver (newURL(" http : //< my Digital Lab 服务器>: <port>/wd/hub"),capabilities);
-
通过将应用程序上载到 Digital Lab,使其可用于测试。有关详细信息,请参阅管理应用程序。
注: 在 iOS 设备上安装应用程序不需要 Mac 计算机。
Appium 脚本执行
运行 Appium 测试时应考虑以下准则:
-
匿名运行 Appium 测试时,会将用户分配到默认工作区。有关详细信息,请参阅实验室和工作区管理。备注表明 LDAP 不支持 Appium 匿名访问。
-
Linux 和 Windows 不支持 Safari 驱动程序。
-
通过 Digital Lab 运行 Appium 测试时,可以指示在脚本执行期间使用的自动化方法。
iOS Digital Lab 使您可以在 iOS 设备上运行测试,而无需使用 Mac 计算机。用于 iOS 的默认自动化方法是 XCUITest。 如果明确要使用 UIA 自动化,请将 automationName Appium 功能设置为 uiAutomation。此功能仅适用于 iOS 版本 9.3 到 11.1。在 iOS 版本 11.1 以上的版本中,不支持此功能,并且全部测试都使用 XCUITest。
AndroidOS 5.0 及更高版本 UiAutomator2 是默认的自动化引擎。uiAutomator2 驱动程序使用 Google 的 UiAutomator2 技术在设备或仿真器上实现自动化。要覆盖默认值并使用 UiAutomator1,请将 automationName Appium 功能设置为"android"。 AndroidOS< 5.0 UiAutomator1("Android") 是 AndroidOS< 5.0 的默认值。只能将 UiAutomator1 用作自动化引擎。
将 Appium 与 SSL 配合使用
要使用 SSL 使用 Appium 和 Digital Lab, Appium 客户端需要信任 UFT Digital Lab 证书。如果 SSL 证书未经已知证书颁发机构签名,则可以导出 Digital Lab 证书并配置 Appium 客户端以信任它 (推荐),或者配置客户端以忽略 SSL 警告。有关导出证书的详细信息,请参阅 SSL 和证书。
Appium 设置代码段
以下代码段显示了 Android 本机个应用程序、 Chrome、iOS 本机个应用程序和 iOS Safari 的示例设置。必须填写粗体行。
有关 Digital Lab 中的常用功能及其支持的列表,请参阅 Digital Lab Appium 功能。
重要信息: 这些代码段使用 Java 客户端 v7.x。如果计划使用 v8 或更高版本,请参阅 github 上的 Java-Client 官方迁移指南。有关其他代码示例,请参阅 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.ot.iShopping |
ID | 应用程序标识符 (字符串)。例如: com.ot.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 ("bundleId" ," com.ot.iShopping");
-
params.put ("uuid" ," bf441f2b-3f16- 4bb5- 950- 4e3eaf2efffb");
-
params.put ("id" ," com.Advantage.aShopping");
有关其他代码示例,请参阅 Appium 代码示例- Java 和 Appium 模拟。
Network virtualization 功能
有关如何在 Digital Lab 中添加 network virtualization 功能的示例,请参考 Network Virtualization 帮助中心。
检索 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。
另请参阅: