1. Selenium IDE 使用指南一(爬虫脚本录制器)
  2. Selenium IDE 使用指南二(命令行运行器)
  3. Selenium IDE 使用指南三(控制流)
  4. Selenium IDE 使用指南四(代码导出)
  5. Selenium IDE 使用指南五(常见问题)
  6. Selenium IDE 使用指南六(指令列表)
  7. Selenium IDE 使用指南七(参数定义)

入门

您可以通过右键点击测试用例(Test Case)或测试套件(Test Suite),选择 Export(导出),选择目标语言,然后再次点击 Export 按钮,将测试脚本导出为 WebDriver 代码。

代码导出右键单击

代码导出菜单

导出操作会将包含目标语言代码的文件保存至浏览器的默认下载目录中。

源跟踪代码注释(Origin Tracing Code Comments)

导出时,提供了一个可选的切换开关,用于启用源跟踪代码注释。

启用后,导出的文件中将包含内联代码注释,其中详细记录了生成该文件的 Selenium IDE 中的具体测试步骤信息。

支持的导出格式

当前,Selenium IDE 支持导出到以下编程语言及测试框架:

  • C# NUnit
  • C# xUnit
  • Java JUnit
  • JavaScript Mocha
  • Python pytest
  • Ruby RSpec

我们计划在每种语言的至少一个测试框架中,支持所有官方认可的 Selenium 编程语言绑定(例如 Java、JavaScript、C#、Python 和 Ruby)。

欢迎社区提供帮助,以添加对新语言或特定测试框架的支持。有关详细信息,请参阅 如何贡献 章节。

C# NUnit

C# NUnit 的导出代码构建为与 .NET Core、NUnit 3.11 及最新版本的 Selenium 配合使用。

要创建一个与 NUnit 配合使用的新样板项目,请使用以下 dotnet new 命令:

dotnet new nunit -n NUnit-Tests --framework netcoreapp2.0

使用以下 .csproj 文件,您可以通过 dotnet restore 命令安装正确的软件包和版本:

<!-- filename: example.csproj -->
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="nunit" Version="3.11.0" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.13.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
    <PackageReference Include="Selenium.Support" Version="4.0.0-alpha03" />
    <PackageReference Include="Selenium.WebDriver" Version="4.0.0-alpha03" />
  </ItemGroup>

</Project>
dotnet restore example.csproj

C# xUnit

C# xUnit 的导出代码构建为与 C#、xUnit 及最新版本的 Selenium 配合使用。

与 C# NUnit 类似,您可以使用 .NET 工具安装依赖项,并在安装后运行项目(例如使用 Install-Package Selenium.WebDriverdotnet add package Selenium.WebDriver)。

要创建一个与 xUnit 配合使用的新样板项目,请使用以下 dotnet new 命令:

dotnet new xUnitTests

使用以下 .csproj 文件,您可以通过 dotnet restore 命令安装正确的软件包和版本:

<!-- filename: example.csproj -->
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="xunit" Version="2.4.1" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
    <PackageReference Include="Selenium.Support" Version="4.0.0-alpha03" />
    <PackageReference Include="Selenium.WebDriver" Version="4.0.0-alpha03" />
  </ItemGroup>

</Project>
dotnet restore example.csproj

Java JUnit

Java JUnit 的导出代码可与 Java 8、JUnit 4.12 及最新版本的 Selenium 配合使用。

您应该能够将导出的 Java 文件放入带有 pom.xml 的标准 Maven 目录结构中,并列出以下依赖关系后运行。

这是一个示例 pom.xml,可帮助您入门:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-ide-java-code-export</artifactId>
  <version>1</version>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>4.0.0-alpha-3</version>
    </dependency>
  </dependencies>
</project>

JavaScript Mocha

JavaScript Mocha 的导出代码构建为与 Node 10、Mocha 6.1.x 及最新版本的 Selenium 配合使用。

安装这些依赖项(例如使用 npm install)后,您应该能够获取导出的 JavaScript 文件并运行它。

这是一个示例 package.json,可帮助您入门:

{
  "dependencies": {
    "mocha": "^6.1.4",
    "selenium-webdriver": "^4.0.0-alpha.3"
  }
}

Python pytest

Python pytest 的导出代码可与 Python 3、pytest 4.6.x 及最新版本的 Selenium 配合使用。

安装这些依赖项(例如使用 pip3 install)后,您应该能够获取导出的 Python 文件 并运行它。

这是一个示例 requirements.txt,可帮助您入门:

pytest == 4.6.3
selenium == 4.0.0a1
pip3 install -r ./requirements.txt

Ruby RSpec

Ruby RSpec 的导出代码可与 Ruby 2.6.x、RSpec 3.9.x 及最新版本的 Selenium 配合使用。

通过使用 Bundler 和以下 Gemfile,您可以安装必要的依赖项:

# Gemfile
source 'https://rubygems.org'

gem 'selenium-webdriver'
gem 'rspec'
gem install bundler
bundle install

如何贡献

代码导出功能以模块化方式构建,旨在便于社区贡献。

每种语言和测试框架都有独立的包,包含要导出的代码。每个代码段都映射到 Selenium IDE 中的命令,并且每个程序包都依赖于底层的“核心”程序包,该核心包承担了主要的工作负载。

以下是在已有语言基础上,为新语言或新测试框架创建代码导出支持的步骤。

1. 创建一个新包

首先,复制一个现有的语言包(例如 packages/code-export-java-junit),然后将其重命名(包括文件夹和 package.json 中的详细信息)为您想要贡献的目标语言和框架(例如 packages/code-export-ruby-rspec 等)。

接下来,在 code-exportpackage.json 中将新包添加为依赖项。

最后,从项目根目录运行 yarn,然后使用 yarn watch 构建项目(此处 提供了进行本地构建的完整详细信息)。

2. 更新定位器和命令

代码导出的基础是特定于语言的字符串,这些字符串将转换为输出的代码。其中最突出的是命令和定位器策略(例如,“by”查找的语法)。

对于给定的语言,每种语言都有一个主文件以及随附的测试文件。

您可以在 packages/code-export-java-junit 中看到一个示例:

声明新命令时,可以将其输出指定 为字符串,也可以指定 为对象 以明确缩进级别。

内置在代码导出中的是一个前缀控件,用于控制输出代码的缩进。如果命令的输出较为冗长且您想明确显示,此结构非常有用;或者当命令更改了紧随其后的命令的缩进级别时也是如此。

3. 创建钩子(Hooks)

钩子构成了要导出代码的大部分结构(例如套件、测试以及其中包含的所有内容,如设置、拆卸等)。它们还使插件能够将代码导出到测试或套件的不同部分。

共有 9 种不同的钩子:

  • afterAll(所有测试完成后)
  • afterEach(完成每个测试后 - 在 afterAll 之前)
  • beforeAll(在运行所有测试之前)
  • beforeEach(在运行每个测试之前 - 在 beforeAll 之后)
  • command(为插件添加的新命令发出代码)
  • dependency(添加其他语言依赖性)
  • inEachBegin(在每个测试的开始阶段)
  • inEachEnd(在每个测试的末尾)
  • variable(声明将在整个套件中使用的新变量)

您可以在 packages/code-export-java-junit 此处看到实现钩子的示例:钩子

4. 更新语言特定的属性

您需要使用每种语言指定一些底层细节,诸如缩进多少空间、如何声明方法、测试、套件等。

您可以在 packages/code-export-java-junit 此处查看实现此示例:语言特定的选项

5. 集成到项目中

将其他所有内容准备就绪后,就可以将其连接起来以在 UI 中使用了。

这是通过 packages/code-export/src/index.js 实现的。

您需要将语言添加到 availableLanguages 列表中。

6. 测试和调整

导出代码的最佳端到端测试是导出一系列测试,并验证它们是否按预期运行。

从开发版本中,您可以访问种子测试(Seed Tests)。这是验证所有标准库命令都适用于您的新语言的良好起点。

再次测试、修复和测试,直到您对最终结果充满信心。


说明:本文部分代码示例引用的依赖版本(如 .NET Core 2.0、Selenium 4.0.0 Alpha 版本、Node 10 等)可能已过时。在实际生产环境中,建议使用各语言框架及 Selenium 的最新稳定版本,并相应调整配置文件。