Appium 集成

与 Appium 的集成使您能够利用OpenText Functional Testing Lab 的功能运行 Appium 脚本。

配置 Visual Studio

如果使用的是 Visual Studio,请配置环境以识别 Appium 项目。

要使用 Appium 设置 Visual Studio 环境,请执行以下步骤:

  1. 创建在 Visual Studio 中的新单元测试项目。
  2. 右键单击解决方案资源管理器中的引用,然后选择添加管理 Nuget 包
  3. 搜索 (对于 Appium Webdriver),然后单击安装。这将更新引用以包括 Appium 驱动程序。
  4. 搜索表示“ Selenium WebDriver ”,然后单击安装。这将更新引用以包括 Selenium 驱动程序。
  5. 实例化 Appium Web 驱动程序。
  6. Appium 功能中所述设置所需的功能。

后退到顶部

配置 Eclipse

如果您使用的是 Eclipse,请配置您的环境以识别 Appium 项目。

要设置 Eclipse 环境,请执行以下步骤:

  1. 下载以下项的最新归档文件:

    1. Selenium WebDriver Java 客户端

    2. 用于 Appium Mobile WebDriver 的 Java 客户端

  2. 提取下载的归档文件的内容。
  3. 在 Eclipse 中,选择 Appium 项目,然后从右键菜单中选择选择属性
  4. 单击 (位于 Java 内部版本路径节点上),然后选择选项卡。
  5. 添加外部 JAR 上单击并添加下载的 JAR,一次一个:

    1. 从 Selenium Java 客户端下载中提取的 Java-clientjar 文件

    2. 提取的 Selenium 客户端下载的 libs 文件夹中的 jar 文件

    3. 从 Java - Client for Appium 下载中提取的 Java-clientjar 文件

  6. 单击确定以关闭属性对话框。

后退到顶部

准备 Appium 测试

准备要在OpenText Functional Testing Lab 上运行的 Appium 测试:

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

    driver = new AndroidDriver(new URL("http://<my OpenText Functional Testing Lab Server>:<port>/wd/hub"), capabilities);

    driver = new IOSDriver(new URL("http://<my OpenText Functional Testing Lab Server>:<port>/wd/hub"), capabilities);

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

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

后退到顶部

Appium 脚本执行

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

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

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

    OS 详细信息
    iOS OpenText Functional Testing Lab 使您可以在 iOS 设备上运行测试,而无需使用 Mac 计算机。用于 iOS 的自动化方法是 XCUITest。
    Android 8 及更高版本 UiAutomator2 是默认的自动化引擎。uiAutomator2 驱动程序使用 Google 的 UiAutomator2 技术在设备或仿真器上实现自动化。要覆盖默认值并使用 UiAutomator1,请将 automationName Appium 功能设置为 " android"。

后退到顶部

将 Appium 与 SSL 配合使用

使用 SSL OpenText Functional Testing Lab 与 Appium 和时,Appium 客户端需要信任 OpenText Functional Testing Lab 证书。

如果 SSL 证书不由已知的认证机构签署 , 请执行以下操作:

Appium 客户 程序
Appium 检察官
  1. 在 Windows Trusted Root 认证机构中安装认证。

  2. 在 Appium Inspector 中 , 选择允许未经授权的证书先进设置中。

其他人

出口 OpenText Functional Testing Lab 证书 , 并设置 Appium 客户端以信任它 (推荐)。否则 , 设置客户端忽略 SSL 警告。有关导出证书的详细信息,请参阅SSL 和证书

后退到顶部

Appium 设置代码段

以下代码段显示了 Android 本机应用程序、Chrome、iOS 本机应用程序和 iOS Safari 的示例设置。必须填写以粗体显示的行。

有关OpenText Functional Testing Lab 中的常用功能及其支持的列表,请参阅Appium 功能

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

Androidnative/mixed 应用程序

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability("platformName", "Android");

capabilities.setCapability("oauthClientId", "oauth2-…");

capabilities.setCapability("oauthClientSecret", "ke1SUI…");

capabilities.setCapability("appPackage", "com.Advantage.aShopping");

capabilities.setCapability("appActivity", "com.Advantage.aShopping.SplashActivity");

Android Chrome browser

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability("platformName", "Android");

capabilities.setCapability("oauthClientId", "oauth2-…");

capabilities.setCapability("oauthClientSecret", "ke1SUI…");

capabilities.setCapability("browserName", "chrome");

iOS native/hybrid 应用程序

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability("platformName", "iOS");

capabilities.setCapability("oauthClientId", "oauth2-…");

capabilities.setCapability("oauthClientSecret", "ke1SUI…");

capabilities.setCapability("bundleId", "com.mf.iShopping");

iOSSafari 浏览器

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability("platformName", "iOS");

capabilities.setCapability("oauthClientId", "oauth2-…");

capabilities.setCapability("oauthClientSecret", "ke1SUI…");

capabilities.setCapability("browserName", "safari");

有关其他代码示例,请参阅Appium 代码示例 - Java Appium 模拟

后退到顶部

常见 Appium API 调用

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

终止应用程序

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

  • appPackage(Android) 或 bundleId(iOS)

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

功能 详细信息
appPackage 仅 Android
标识应用程序的软件包名称,在应用程序详细信息卡中显示为包 ID。例如 com.Advantage.aShopping
bundle ID 仅 iOS
唯一标识符,应用程序的 BundleID,在应用程序详细信息卡中显示为包 ID。例如 com.mf.iShopping
ID 应用程序标识符 (字符串)。例如: com.mf.iShopping。
uuid 通用唯一标识符 (UUID)。这是OpenText Functional Testing Lab 分配的唯一应用程序特定 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("bundleId", "com.mf.iShopping");

  • params.put("uuid", "bf441f2b-3f16-4bb5-950d-4e3eaf2efffb");

  • params.put("id", "com.Advantage.aShopping");

有关其他代码示例,请参阅Appium 代码示例 - Java Appium 模拟

Network virtualization 功能

请参见 Network Virtualization 帮助中心为如何在 OpenText Functional Testing Lab 中添加网络虚拟化功能的示例。

后退到顶部

向实验室报告测试状态

您可以报告 Appium 或 Selenium 脚本的测试是通过还是失败。您可以在实验室的结果选项卡中查看这一点。有关更多详细信息,请参阅测试结果

要报告 Appium 或 Selenium 测试的测试状态,请定义一个映射 (Java) 或字典 (C#),其属性为 statuscomment。在测试过程中,通过 executeScript API 设置状态和注释。注释可以是与测试失败相关的信息,例如,测试执行消息。

Java 示例

Copy code
Map<String, String> status = new HashMap<>();
status.put("status", status); //status can be "Passed" or "Failed"
status.put("comment", comment); //comments can be information relating to the failure, for example, the execution message.
wd.executeScript("FTLab:status", status);


C# 示例

Copy code
Dictionary<string, string> statusmap = new Dictionary<string, string>();
            statusmap.Add("status", status); //status can be "Passed" or "Failed"
            statusmap.Add("comment", comment); //comments can be information relating to the failure, for example, the execution message.
            driver.ExecuteScript("FTLab:status", statusmap);


备注: 当 Android/iOS Driver 创建失败时,系统会显示状态“不可用”

后退到顶部

下载 Appium 日志

日志文件是在执行 Appium 测试期间生成的,有助于进行调试。该日志文件包括 Appium 测试会话日志和设备日志。

日志检索使用 FTLab-wd:downloadLogs 脚本,并指定编码。当连接器收到此命令时,将检索当前测试会话的日志。

将字符串附加到响应正文。Appium 用户的测试代码使用响应正文中的字符串并相应地对其进行处理。

例如:

HashMap<String, String> encoding= new HashMap<String, String>();

encoding.put("encoding", "UTF-8");

String logFileContents = (String) wd.executeScript("FTLab-wd: downloadLogs", encoding);

您可以在结果选项卡的项目部分下载日志文件。有关详细信息,请参阅测试结果

注:

  • 对于 Appium 版本 1 会话,日志文件中同时包含设备日志和整个 Appium 服务器日志,而不是特定 Appium 测试会话的日志。

  • dl-wd: 为了向后兼容,仍支持下载日志。

有关其他代码示例,请参阅Appium 代码示例 - Java Appium 模拟

后退到顶部

并行测试

可以在OpenText Functional Testing Lab 上运行并行 Appium 和 Selenium 测试。

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

后退到顶部

另请参阅: