Appium 集成

与 Appium 的集成使您能够利用 UFT Mobile 的功能运行 Appium 脚本。

准备环境

要准备运行自动化 Appium 测试的环境,需要配置工作环境(如 Visual Studio 或 Eclipse)以识别 Appium 项目。

后退到顶部

准备 Appium 测试

准备要在 UFT Mobile 上运行的 Appium 测试:

  • 在启动会话的代码中,使用以下格式将 Appium 服务器 URL 和端口替换为 URL 和端口 UFT Mobile (有关示例,请参见下文):

    driver = new Android驱动程序(newURL("http://<my UFT Mobile服务器>:<port>/wd/hub"),capabilities);

    driver = new IOSDriver (newURL(" http: //< my UFT Mobile服务器>:<port>/wd/hub"),capabilities);

  • 通过将个应用程序上载到 UFT Mobile,使其可用于测试。有关详细信息,请参阅 管理个应用程序

”注意:“在 iOS 设备上安装个应用程序不需要 Mac 计算机。

后退到顶部

Appium 脚本执行

运行 Appium 测试时应考虑以下准则:

  • 匿名运行 Appium 测试时,会将用户分配到默认工作区。有关详细信息,请参阅 实验室和工作区管理。备注表明 LDAP 不支持 Appium 匿名访问。

  • Linux 和 Windows 不支持 Safari 驱动程序。

  • 在 Windows 上,Appium V2 不支持 Node.js 的全局安装,这将导致使用 Appium V2 运行的测试失败。

  • 通过 UFT Mobile 运行 Appium 测试时,可以指示在脚本执行期间使用的自动化方法。

    iOS
    UFT Mobile 使您可以在 iOS 设备上运行测试,而无需使用 Mac 计算机。用于 iOS 的默认自动化方法是 XCUITest。

    如果明确要使用 UIA 自动化,请将 ”automationName“ Appium 功能 设置为 ”uiAutomation“。此功能仅适用于 iOS 版本 9.3 到 11.1。在 11.1 以上的 iOS 版本中,不支持该功能,所有测试都将使用 XCUITest。

    AndroidOS.0 及更高版本
    UiAutomator2 是默认的自动化引擎。uiAutomator2 驱动程序使用 Google 的 UiAutomator2 技术在设备或仿真器上实现自动化。要覆盖默认值并使用 UiAutomator1,请将 ”automationName“ Appium 功能 设置为" android"。
    AndroidOS< 5.0
    UiAutomator1(“Android”)是 AndroidOS< 5.0 的默认值。只能将 UiAutomator1 用作自动化引擎。

后退到顶部

将 Appium 与 SSL 配合使用

要使用 Appium 和 UFT Mobile 使用 SSL,Appium 客户端需要信任 UFTM 证书。如果 SSL 证书未经已知证书颁发机构签名,则可以导出 UFTM 证书并配置 Appium 客户端以信任它(推荐),或者配置客户端以忽略 SSL 警告。有关导出证书的详细信息,请参见 使用 SSL 和证书

后退到顶部

Appium 设置代码段

以下代码段显示 Androidnative 个应用程序、Chrome、iOSnative 个应用程序和 iOSSafari 的示例设置。必须填写粗体行。

有关 UFT Mobile 中的常用功能及其支持的列表,请参见 UFT Mobile Appium 功能

”重要信息:“ 这些代码段使用 Java 客户端 v7.x。如果计划使用 v8 或更高版本,请参阅 github 上的 Java-Client 官方迁移指南 。有关其他代码示例,请参见 UFTM github 存储库

有关其他代码示例,请参见 Appium 代码示例- JavaAppium 模拟

后退到顶部

常见 Appium API 调用

使用以下 Appium API 调用管理个应用程序。

终止应用程序

Kill API 调用将停止应用程序。它不只是最小化个应用程序,而是终止进程。脚本名称为 ”mc: application: kill“,必须使用以下参数之一:

  • ”appPackage“(Android)或”bundleId“(iOS)

  • ”id“ 或 ”uuid“,如 REST API 参考 UFT Mobile -应用程序安装/卸载中所使用。

appPackage ”Androidonly“。
标识个应用程序的软件包名称,在个应用程序详细信息卡中显示为包 ID。例如 com.Advantage.aShopping
bundle ID ”仅 iOS“。
唯一标识符,个应用程序的 BundleID,在个应用程序详细信息卡中显示为包 ID。例如 com.mf.iShopping
ID 应用程序标识符(字符串)。例如: com.mf.iShopping。
uuid 通用唯一标识符(UUID)。这是 UFT Mobile 分配的唯一应用程序特定 ID。例如,“bf441f2b - 3f16- 4bb5- 950d-4e3eaf2efffb”。


以下示例代码终止 AndroidAdvantage 个应用程序:

Copy code
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 代码示例- JavaAppium 模拟

Network Virtualization 功能

有关如何在 Network Virtualization 中添加网络虚拟化功能的示例,请参考 UFT Mobile 帮助中心

后退到顶部

检索 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 代码示例- JavaAppium 模拟

后退到顶部

并行测试

可以在 UFT Mobile 上运行并行 Appium 和 Selenium 测试。

您可以通过编码或使用配置项(持续集成)工具(如 Jenkins)来实现此目的。有关如何在 Jenkins 中运行并行测试的示例,请参见 Jenkins Wiki

后退到顶部

另请参见: