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#),其属性为 status 和 comment。在测试过程中,通过 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 插件。

后退到顶部

另请参阅: