Appium 集成
与 Appium 的集成使您能够利用OpenText Functional Testing Lab 的功能运行 Appium 脚本。
配置 Visual Studio
如果使用的是 Visual Studio,请配置环境以识别 Appium 项目。
要使用 Appium 设置 Visual Studio 环境,请执行以下步骤:
- 创建在 Visual Studio 中的新单元测试项目。
- 右键单击解决方案资源管理器中的引用,然后选择添加管理 Nuget 包。
- 搜索 (对于 Appium Webdriver),然后单击安装。这将更新引用以包括 Appium 驱动程序。
- 搜索表示“ Selenium WebDriver ”,然后单击安装。这将更新引用以包括 Selenium 驱动程序。
- 实例化 Appium Web 驱动程序。
- 按Appium 功能中所述设置所需的功能。
配置 Eclipse
如果您使用的是 Eclipse,请配置您的环境以识别 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 测试
准备要在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 检察官 |
|
其他人 |
出口 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 应用程序:
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 示例
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# 示例
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 插件。
另请参阅: