代码导出
入门
你可以通过右键单击测试或套件,选择导出
,选择你的目标语言,然后单击导出
,将测试或测试套件导出到 WebDriver 代码。
这会将包含目标语言的导出代码的文件保存到浏览器的下载目录。
来源跟踪代码注释
导出时,有一个可选的开关可以启用来源跟踪代码注释。
这会在导出的文件中放置内联代码注释,其中包含有关在 Selenium IDE 中生成它的测试步骤的详细信息。
支持的导出
目前,支持导出到以下语言和测试框架。
- C# NUnit
- Java JUnit
- JavaScript Mocha
- Python pytest
我们打算至少为每种语言支持一个测试框架,支持 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
使用 dotnet restore
命令,通过以下 .csproj
文件,您可以安装正确的包和版本。
<!-- 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 一样,您可以在安装这些依赖项后使用 dotnet 工具安装它(例如,使用 Install-Package Selenium.WebDriver
或 dotnet add package Selenium.WebDriver
)。
要创建一个新的样板项目以配合 xUnit 使用,请使用 dotnet new
命令。
> dotnet new xUnitTests
使用 dotnet restore
命令,通过以下 .csproj
文件,您可以安装正确的包和版本。
<!-- 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 文件,并将其放入一个标准的 Maven 目录结构中,其中包含列出这些依赖项的 pom.xml
文件,然后运行它。
以下是一个示例 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
)后,你应该能够获取导出的 JavaScript 文件并运行它。
以下是一个示例 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.cn'
gem 'selenium-webdriver'
gem 'rspec'
> gem install bunder
> bundle install
如何做出贡献
代码导出以模块化方式构建,以帮助实现贡献。
每种语言和测试框架都将有自己的软件包,其中包含要导出的代码。每个代码片段都映射到 Selenium IDE 中的一个命令,并且这些软件包中的每一个都依赖于一个底层的“核心”软件包,该软件包执行所有繁重的工作。
以下是在已经建立的语言中为新语言或新测试框架创建语言或框架的步骤。
1. 创建新软件包
首先,复制现有的语言软件包(例如,packages/code-export-java-junit
),并将其重命名(例如,package.json
文件中的文件夹和详细信息)为目标语言和框架您想做出贡献(例如,packages/code-export-ruby-rspec
等)。
接下来,将新软件包作为依赖项添加到 code-export
中的 package.json
。
最后,从项目的根目录运行 yarn
,然后使用 yarn watch
构建项目(有关进行本地构建的完整详细信息,请参见 此处)。
2. 更新定位器和命令
代码导出的重中之重是特定于语言的字符串,这些字符串将转换为输出代码。其中最突出的是命令和定位器策略(例如,“by”查找的语法)。
对于给定的语言,每个语言都有一个文件,以及随附的测试文件。
您可以在 packages/code-export-java-junit
中看到一个示例。
声明新命令时,您可以指定其输出 作为字符串,或 作为指定缩进级别的对象)。
内置于代码导出中是一个美化器,它控制输出代码的缩进。如果命令的输出冗长且您想明确输出,或者如果命令更改了其后命令的缩进级别,则此结构很有用。
3. 创建钩子
钩子构成了要导出的代码的大部分结构(例如,套件、测试以及所有包含在其中的内容,如设置、拆除等)。它们还使插件能够将代码导出到测试或套件的不同部分。
有 9 个不同的钩子
afterAll
(在所有测试完成后)afterEach
(在每个测试完成后 - 在afterAll
之前)beforeAll
(在所有测试运行之前)beforeEach
(在每个测试运行之前 - 在beforeAll
之后)command
(为插件添加的新命令发出代码)dependency
(添加附加语言依赖项)inEachBegin
(在每个测试中,在测试开始时)inEachEnd
(在每个测试中,在测试结束时)variable
(声明一个新变量以在整个套件中使用)
您可以在此处查看在 packages/code-export-java-junit
中实现钩子的示例:Hooks
4. 更新特定于语言的属性
在每种语言中,您都需要指定一些低级详细信息。例如缩进多少个空格、如何声明方法、测试、套件等。
您可以在此处查看在 packages/code-export-java-junit
中实现此操作的示例:特定于语言的选项
5. 将其添加到混合中
一旦您将所有其他内容就绪,就可以将其连接起来以便在 UI 中使用。
这在 packages/code-export/src/index.js
中是可能的。
您需要将您的语言添加到 availableLanguages
。
6. 测试和调整
针对代码导出的最佳端到端测试是导出一系列测试并验证它们按预期运行。
从开发版本中,您可以访问种子测试。这是验证所有标准库命令是否适用于您的新语言的一个良好起点。
测试、修复,然后再次测试,直到您对最终结果充满信心。
7. 提交 PR
您已经完成了艰苦的部分。现在只需提交 PR 即可,请针对 v3
分支 提交。