本节介绍如何从命令行运行 Selenic,以便您可以在持续测试执行过程中自动化 Selenic。本章节:

引言

Parasoft Selenic 实现为两个 .jar 文件。作为持续测试执行过程的一部分,首先运行 selenic_agent.jar 文件,以捕获有关测试执行的信息。然后运行 selenic_analyzer.jar 文件来分析代理捕获的数据。

分析器将根据 Selenic 对您的测试和应用程序的了解生成建议。您可以查看报告并手动应用建议,或启用自我修复功能,以便 Selenic 代理在持续测试执行期间自动应用建议或修复等待条件。这使自动化 UI 测试行为能够持续进行,而不会影响下游进程。 

如果您使用的是 Selenic IDE 插件,则两个过程(捕获测试执行行为和分析数据)都在一个操作下执行。以下视频概述了如何在命令行中使用 Selenic。


捕获测试执行数据

在执行测试时使用 -javaagent 参数指定和配置 selenic_agent.jar 文件,以指导 Selenic 测试逻辑。必须启用 captureDom 选项才能捕获测试执行数据。至少需要一次成功的测试执行 Selenic 才能提供建议。

Java 可执行文件

以下示例演示了如何使用 Java 可执行文件运行 Selenic 代理:

Java 可执行文件 (JUnit):
java -javaagent:/path/to/selenic_agent.jar=captureDom=true -cp /path/to/junit.jar;/path/to/folder/containing/test/classes junit.textui.TestRunner com.mypackage.MyTestClass

您还可以通过调用 Cucumber CLI 运行程序 (io.cucumber.core.cli.Main) 而不是 JUnit 或 TestNG 运行程序来运行 Cucumber 项目。此外,您必须指定要执行的功能文件和粘合代码,例如:

Java 可执行文件(Cucumber CLI):
java -javaagent:/path/to/selenic_agent.jar=captureDom=true -cp /path/to/cucumber-core.jar;/path/to/folder/containing/glue/classes io.cucumber.core.cli.Main /path/to/feature.feature --glue com.mygluecode

有关其他使用信息,请参阅 Cucumber CLI 文档:https://cucumber.io/docs/cucumber/api/#running-cucumber

Maven 命令

本文档中的命令行示例使用 Maven 命令:

Maven:
mvn test -DargLine=-javaagent:/path/to/selenic_agent.jar=captureDom=true

您可以通过使用以下格式配置 Java 代理参数来利用其他 Selenic 功能:

mvn test -DargLine=-javaagent:/path/to/selenic_agent.jar=arg1=value1,arg2=value2

有关详细信息,请参阅Selenic 代理选项

Selenic 会将测试执行数据保存到 <USER_HOME>/parasoft/recorded_data 目录。运行 Selenic 分析器以分析数据并创建更新任何错误定位器的建议。 

测试执行结果将保存到 <PROJECT>/target/surefire-report 目录。 

示例命令

以下示例展示了如何使用可用命令Selenic 代理选项。 

在执行期间捕获 DOM 并截屏

mvn test -DargLine=-javaagent:/Applications/parasoft_selenic/selenic_agent.jar=captureDom=true,screenshot=failures

创建 API 测试和自我修复错误定位器和等待条件

在此示例中,启用了主要的 selfHealing 选项,这使 Selenic 能够将默认的自我修复功能应用于定位器和等待条件。测试必须至少使用 Selenic Java 代理成功执行一次,才能自动修复错误的定位器。修复等待条件没有先决条件。

createApiTests 选项具有以下先决条件:

  • SOAtest 服务器必须正在运行
  • Parasoft Web 代理必须正在运行
mvn test -DargLine=-javaagent:/Applications/parasoft_selenic/selenic_agent.jar=createApiTests=true,proxyPort=40090,soatestHost=localhost,soatestPort=9080,username=admin,password=admin,selfHealing=true

将在 SOAtest 服务器的工作空间中创建 API 测试。

与 Applitools 集成

Applitools 是一种第三方工具,可在测试执行期间捕获屏幕截图或“验证点”其显示在 Web 应用程序中,以便您可以直观地验证 UI 变更。您可以将 Selenic 配置为在使用 Selenic 代理运行工具时自动调用 Applitools API。将在每个 Selenium 导航操作之前、每个 Selenium 单击操作之前以及每个测试结束时捕获检查点。

先决条件

Applitools JAR 文件必须已经位于包含 Selenium 测试的项目的类路径中。如果 JAR 文件不存在,则会向控制台打印一条错误消息,但测试将继续运行。

APPLITOOLS_API_KEY 环境变量必须在 CI 系统中配置或作为 Java 系统属性传递给执行测试的进程。有关如何添加环境变量的说明,请参阅 Applitools 文档:

https://applitools.com/docs/topics/integrations/github-integration-ci-setup.html

有关如何获取 API 密钥的说明,请参阅 Applitools 文档:

https://applitools.com/docs/topics/overview/obtain-api-key.html 

用法

使用 applitoolsapplitoolsApplicationName 参数运行 Selenic 代理,以使用 Applitools 执行测试:

mvn test -DargLine=-javaagent:/Applications/parasoft_selenic/selenic_agent.jar=captureDom=true,applitools=true,applitoolsApplicationName=MyApplication

测试执行后,检查点将出现在 Applitools Web 应用程序中,因此您可以使用 Applitools 功能。 

您可以同时使用 Applitools 和 Selenic 屏幕截图选项,但 Applitools 旨在提供额外的视觉测试功能。 

查看结果

运行 Selenic 分析器以生成 HTML 报告(请参阅生成建议)。不需要额外的参数。有关 Applitools 捕获的视觉变更的信息显示在 Selenic HTML 报告中。有关详细信息,请参阅查看 Applitools 的结果

执行受变更影响的测试

您可以利用 Selenic 的测试影响分析功能来确定哪些测试受到被测应用程序变更的影响。有关使用此功能的详细信息,请参阅测试影响分析

生成建议

使用 Selenic 执行测试后,运行 selenic_analyzer.jar 文件以生成建议。分析器将分析 <USER_HOME>/parasoft/recorded_data 目录中的数据,并为失败的定位器生成建议。如果启用了等待条件的自我修复,Selenic 生成的报告还将包含等待条件的建议。如果使用 -allLocators 选项,则会为所有通过和失败的定位器生成建议。 

java -jar /path/to/selenic_analyzer.jar

您可以指定其他参数来自定义 Selenic 如何输出其分析结果。有关所有可用参数的信息,请参阅Selenic 分析器参数

java -jar /path/to/selenic_analyzer.jar -<arg> <arg_value>

Selenic 代理选项

您可以在使用 Selenic 执行测试期间指定以下选项:

applitools 

此选项使 Selenic 能够与 Applitools 集成。当设置为 true 时,这些选项applitoolsApplicationName是必需的。

默认为 false

applitoolsApplicationName

此选项指定您正在测试的应用程序的名称。指定的名称用于 Applitools Web 应用程序 UI 的 App 字段中,以便您可以按应用程序进行过滤。

如果applitools 选项为 true,则此选项是必需的。

captureDom

当 Selenium 尝试定位元素时,此选项使 Selenic 能够捕获 DOM。Selenic 需要此选项来自动修复错误的定位器或为定位器生成建议。

默认为 false

collectCoverage

此选项使 Selenic 能够在测试执行期间为测试影响分析收集覆盖率数据。有关详细信息,请参阅测试影响分析

默认为false 

coverageAgentHost

此选项指定运行 AUT 和覆盖率代理的主机,以便在测试执行期间捕获覆盖率数据以进行测试影响分析。有关详细信息,请参阅测试影响分析

默认为 localhost 

coverageAgentPort

此选项指定运行 AUT 和覆盖率代理的端口,以便在测试执行期间捕获覆盖率数据以进行测试影响分析。有关详细信息,请参阅测试影响分析

默认值为 8050

coverageAgentUserID

该选项指定一个用户ID,以便在多会话模式下收集覆盖时可以区分不同的用户。有关详细信息,请参阅测试影响分析。 

coverageDir

此选项指定要从 AUT 服务器下载的覆盖率数据的本地目录,以便在测试执行期间进行测试影响分析。有关详细信息,请参阅测试影响分析

createApiTests

此选项使 Selenic 能够在 UI 测试执行期间使用 Parasoft SOAtest 创建 API 测试。 

默认为 false

如果启用此选项,一次只能创建一个 .tst 文件。如果您同时运行测试,则一次只会为一种场景创建 API 测试。对于同时运行的其他场景,日志中将显示以下错误:

[ERROR] ParasoftSelenicAgent - Failed to start web proxy session: A session is currently in
process. Wait for the session to finish before starting another one.

测试框架应配置为在单线程中运行(一次一种测试场景),以便捕获所有测试场景的 API 测试。

数据

此选项指定在测试执行期间记录的数据的位置。Selenic 分析器的-data选项应配置为与为此选项配置的值相匹配。  

默认为 <USER>/parasoft/recorded_data 

proxyPort

如果您在 UI 测试执行期间创建 API 测试,请指定 SOAtest Web 代理的端口号。

有关更多信息,请参阅Parasoft Recorder文档。

默认值为 40090

soatestHost

如果您在 UI 测试执行期间创建 API 测试,请指定运行 SOAtest 服务器的主机。 

有关更多信息,请参阅Parasoft Recorder文档。

默认为 localhost

soatestPort

如果您在 UI 测试执行期间创建 API 测试,请指定 SOAtest 服务器的端口号。  

有关更多信息,请参阅Parasoft Recorder文档。

默认值为 9080

secure

如果您在 UI 测试执行期间创建 API 测试,此选项使 Selenic 能够通过 HTTPS 与 SOAtest 服务器通信。

默认为 false

username

如果您在 UI 测试执行期间创建 API 测试并且为 SOAtest 服务器启用了用户身份验证,则此选项指定用于登录服务器的用户名。

password

如果您在 UI 测试执行期间创建 API 测试并且为 SOAtest 服务器启用了用户身份验证,则此选项指定登录服务器的密码。

maxSessionDaysToAnalyze 

此选项指示在执行期间应用  selfHealLocators 选项时要包括多少天的测试会话。默认情况下,没有限制,因此 Selenic  将分析所有可用的录制数据。 

在以下示例中,Selenic 代理将使用 12 天的录制数据来确定自动修复失败的定位器或等待条件的最佳选项。 

maxSessionDaysToAnalyze=12 

日期仅指最近录制数据的天数,而非日历天数。 

maxSessionDaysToKeep 

此选项指示要在磁盘上保留多少天的测试会话数据。

默认值为 90

在以下示例中,Selenic 代理将在磁盘上保留 12 天的录制数据:

maxSessionDaysToKeep=12 

指定的值是指录制数据的天数,而非日历天数。 

screenshot 

此选项使测试机器能够为 任一 WebDriver 命令 Selenic 日志截取屏幕截图

您可以设置以下值之一:

  • 全部 - 捕获 Selenium 测试中每个查找元素调用的屏幕截图
  • 失败 - 仅捕获失败的查找元素调用的屏幕截图
  • - 不捕获任何屏幕截图

默认为无。

selfHealing

此选项启用自我修复功能。设置为 true 时,启用selfHealLocatorsselfHealWaitConditions 选项。 

默认为 false。

selfHealLocators

此选项使 Selenic 能够在运行时根据测试执行期间收集的历史信息自动尝试更新定位器。 

启用selfHealing 时默认为 true

selfHealWaitConditions

此选项使 Selenic 能够扩展 Selenium 等待条件,以防止在测试执行期间由于等待条件不足而导致超时或其他类型的错误。  

启用selfHealing 时默认为 true

additionalWaitTimePercent 

此选项指定应延长等待条件的额外时间,以防止在测试执行期间出现超时或与等待条件不足相关的其他错误。使用此选项指定的值是原始等待条件的百分比。Selenic 将根据百分比计算额外时间并延长 Selenium 测试的等待条件。以下示例中,最初配置为4秒的等待条件将延长 50% 至 6 。  

additionalWaitTimePercent=50 

当启用selfHealingselfHealWaitConditions时,默认值为50

minAdditionalWaitTime  

此选项指定将原始等待条件延长的最小秒数,以防止在测试执行期间与等待条件不足有关的超时或其他错误。如果结果百分比小于最小值,则此选项的值会覆盖使用additionalWaitTimePercent选项动态设置的值。 

当启用selfHealingselfHealWaitConditions时,默认值为 true

sessionId

此选项指定测试执行数据的标识符。此设置是可选的,仅应在跨多个项目运行测试时使用,以便可以将来自所有项目的 Selenium 数据分组到一个会话下。否则,每个项目的 Selenium 数据将录制在单独的会话 ID 下。因此,在您可以在不同的项目中运行测试之前,需要为项目中的每个测试执行运行分析器。

示例:

mvn test -DargLine=-javaagent:/path/to/selenic_agent.jar=captureDom=true,sessionId=ID_1

分析数据时,在调用 selenic_analyzer.jar 文件时使用-sessionId选项来引用测试执行期间设置的 ID。示例:

java -jar /path/to/selenic_analyzer.jar -sessionId ID_1

默认情况下,使用日期和时间戳。  

Selenic 将执行数据存储在data 属性指定的目录中。录制数据目录中的每个子目录都包含各个会话的执行数据。子目录以 sessionId 值命名。如果未配置 sessionId 参数,Selenic 将默认将数据存储在以时间戳标识的子目录中。

如果您没有指定会话 ID,那么您必须在每次在项目中运行测试时运行分析器,然后再在不同项目中运行测试。每次测试运行的会话 ID 应该不同,以便将早期测试运行的结果与以后的测试运行相结合。因此,建议使用构建标识符或默认时间戳。


Selenic 分析器参数

支持以下选项:

-allLocators

使用此选项可获取 Selenium 测试中所有操作的定位器建议。默认情况下,Selenic 只为失败的定位器提供定位器建议。成功的定位器建议仅在 JSON 报告中可见,而在 HTML 报告中不可见。

-data <path_to_recorded_data>

此选项指定录制数据的位置。在运行 Selenic 代理时,应将其配置为与使用data选项指定的位置相匹配。 

默认为 <USER>/parasoft/recorded_data 

-encodepass <password>

使用此选项打印出可在 selenic.properties 文件中使用的编码密码。请参见许可证

在以下示例中,一个编码字符串将打印到控制台,可用于代替 myPassword

java -jar selenic_analyzer.jar -encodepass myPassword

-help

此选项将支持的参数列表打印到控制台。

-machineId 

此选项将机器码打印到控制台。Parasoft 需要机器码才能颁发本地许可证。请参见许可证

-maxSessionDaysToAnalyze <value>

此选项指示在分析录制的数据以生成建议时要包括多少天的测试会话。默认情况下,没有限制,因此 Selenic 将分析所有可用的录制数据。

在以下示例中,Selenic 分析器将使用 12 天的录制数据来生成定位器或等待条件建议。 

java -jar selenic_analyzer.jar -maxSessionDaysToAnalyze 12

日期仅指最近录制数据的天数,而非日历天数。 

-performanceBenchmarking 

此选项使 Selenic 能够计算和报告测试执行性能基准。Selenic 收集并报告测试方法的执行时间,当启用此选项时,Selenic 会根据最小的测试运行集计算每个测试方法的平均执行持续时间。报告中会标记超出平均持续时间指定百分比的测试方法。在确定平均值时,只有通过测试的运行才会包含在计算中。

可配置确定平均值所需的最小测试运行次数以及超过平均持续时间的阈值。有关配置性能基准测试参数的信息,请参阅 -performanceBenchmarkingMinRuns-performanceBenchmarkingPercent

默认情况下禁用此选项。 

在以下示例中,启用了性能基准测试,-performanceBenchmarkingMinRuns 选项设置为 5-performanceBenchmarkingPercent选项设置为 20

java -jar selenic_analyzer.jar -performanceBenchmarking -performanceBenchmarkingMinRuns 5 -performanceBenchmarkingPercent 20

五次测试运行后,Selenic 确定测试方法平均需要 20 秒才能完成。在第六次运行时,测试需要 24.2 秒才能完成,比平均水平高出 21%。测试将在 HTML 报告中进行标记。有关如何报告性能基准测试的信息,请参阅查看报告。 

-performanceBenchmarkingMinRuns <number_of_runs>

此选项设置测试方法所需的最小测试运行次数,这些测试方法超过使用 -performanceBenchmarkingPercent 选项设置的百分比,以在报告中进行标记。平均测试持续时间用作性能基准测试功能的基线。有关性能基准测试功能的详细信息,请参阅-performanceBenchmarking

默认值为5 

-performanceBenchmarkingPercent <percent_threshold> 

此选项根据平均执行时间设置当前测试运行的测试执行持续时间阈值。如果当前运行中的测试超过平均测试持续时间超过指定百分比,则测试将在 HTML 报告中被标记。有关性能基准测试功能的详细信息,请参阅-performanceBenchmarking

默认值为20 

-publish

使用此选项以将测试结果发布到您的 DTP 中的项目。必须配置 DTP 连接和项目设置(请参阅报告结果至 DTP)。

-report <path_to_filename>

此选项指定要生成的报告文件的位置和名称。

支持目录/文件的绝对路径。 

示例:

java -jar selenic_analyzer.jar -report /home/reports
java -jar selenic_analyzer.jar -report "C:\reports\my-report.html"

默认使用以下位置:

"{WORKING_DIR}/report.html"

-sessionId <value>

此选项使您能够指定包含要处理的录制数据的测试会话的 ID。如果未指定,则使用上次录制会话的数据。

-settings <location_of_properties_file>

使用此选项可指定包含 selenic_analyzer.jar 的执行选项的 .properties 配置文件。.properties 文件包含可以在 Selenic 分析期间实施的许可和报告配置。有关其他信息,请参阅以下部分:

-Source <directory_or_file>

此选项使您能够指定源文件的位置或包含要发布到 DTP 的源文件的目录。您可以使用多个-source 标志来指定一组目录或文件。如果 Selenic 未配置为将源发布到 DTP,则此选项无效(请参阅将源文件发布到 DTP)。

默认为当前工作目录。

示例:

java -jar selenic_analyzer.jar -source C:\my_project1 -source C:\my_project2

-surefire<path_to_file>

此选项使您能够指定 Surefire XML 报告的位置。Surefire XML 报告是在 Maven 中运行测试时创建的,用于创建 HTML 报告。

支持目录/文件的绝对路径。 

还支持以下通配符: 

** - 使用两个星号来匹配目录。

* - 使用单个星号来匹配文件名。 

示例:

-surefire "/home/folder" 

-surefire "C:\folder\file.xml"

在以下示例中,Selenic 将在 /folder1/folder2/folder3、/folder2/folder3 和 /folder3 中查找 XML 文件:

-surefire "**/folder3" 

在以下示例中,Selenic 将在文件夹 3 中查找所有以"ProjectA”为前缀的 XML 文件: 

-surefire "**/folder3/ProjectA*.xml"

默认使用以下位置:

"**/target/surefire-reports/"

  • No labels