Selenium IDE 使用指南一（爬虫脚本录制器）Selenium IDE 使用指南二（命令行运行器）Selenium IDE 使用指南三（控制流）Selenium IDE 使用指南四（代码导出）Selenium IDE 使用指南五（常见问题）Selenium IDE 使用指南六（指令列表）Selenium IDE 使用指南七（参数定义）现在，您可以在任何浏览器上并行运行所有 Selenium IDE 测试，甚至可以在 Grid 上运行，而无需编写任何代码。只需安装 Selenium IDE 命令行运行器（Command Line Runner），获取必要的浏览器驱动程序（如果在本地运行测试），然后从命令提示符启动带有所需选项的运行器即可。先决条件要使命令行运行器正常运行，需要以下依赖项：node（Node.js 运行时环境）：版本 8 或 10npm（Node.js 包管理器）：通常与 node 一同安装selenium-side-runner（Selenium IDE 命令行运行器）所要使用的浏览器驱动程序（详见下一节）安装示例：brew install node npm install -g selenium-side-runner注意：您的系统配置可能与上面的示例不同（例如，macOS 上的 Homebrew）。如果是这样，请参阅 Node 包管理器安装文档，或直接从 Node 下载页面 下载适用于您操作系统的安装程序。安装浏览器驱动程序如果要在本地运行测试，每个浏览器都需要一些额外的设置。Selenium 通过一个称为“浏览器驱动程序”的小型二进制应用程序与每个浏览器进行通信。每个浏览器都有对应的驱动程序，您可以手动下载并添加到系统路径，也可以使用包管理器安装最新版本的浏览器驱动程序（推荐）。您还需要在计算机上安装对应的浏览器本身。Chrome对于 Chrome，您需要 ChromeDriver。npm install -g chromedriverEdge对于 Microsoft Edge，您需要在 Windows 上运行，并且还需要 EdgeDriver。npm install -g edgedriverFirefox对于 Firefox，您需要 geckodriver。npm install -g geckodriverInternet Explorer对于 Internet Explorer，您需要在 Windows 上运行，并且还需要 IEDriver。npm install -g iedriver要使 IEDriver 工作，还需要一些其他设置。详细信息请参阅 此处。Safari对于 Safari，您需要 SafariDriver。它附带在最新版本的 Safari 中。您只需采取几个步骤就可以在计算机上启用它。有关详细信息，请参见 SafariDriver 文档的这一部分。启动运行器安装完 selenium-side-runner 及所有组件后，只需在命令行中调用测试，随后指定之前保存的项目文件路径即可运行测试（请参阅 使用指南一）。selenium-side-runner /path/to/your-project.side注意：如果您有多个 .side 文件，则可以使用通配符（例如 /path/to/*.side）。当您运行此命令时，它将在多个浏览器窗口中并行启动测试，并跨 n 个进程分布（这里的 n 是计算机上可用 CPU 内核的数量）。进程数可以在运行时通过提供的各种参数进行配置（除其他外）。注意：并行执行在套件（Suite）级别自动发生。如果要并行执行套件中的测试，则需要更改一个设置。有关详细信息，请参见 套件中的测试并行化。运行时配置使用运行器，您可以在运行时传递不同的配置参数。在本地不同的浏览器上运行此功能最常见的用途是为本地测试执行指定其他浏览器。selenium-side-runner -c "browserName=chrome" selenium-side-runner -c "browserName='internet explorer'" selenium-side-runner -c "browserName=edge" selenium-side-runner -c "browserName=firefox" selenium-side-runner -c "browserName=safari"注意：在本地运行测试时，每个浏览器都需要进行一些设置。有关详细信息，请参见 安装浏览器驱动程序。在 Selenium Grid 上运行要在 Grid（例如您自己的 Grid 或诸如 Sauce Labs 的托管提供商）上运行测试，可以指定它以及其他功能（Capabilities）。selenium-side-runner --server http://localhost:4444/wd/hub -c "browserName='internet explorer' version='11.0' platform='Windows 8.1'"--server 指定 Grid 的 URL，-c 是您希望 Grid 使用的功能。您可以 在此处查看 可用功能的完整列表。指定并行进程数在 Grid 上运行时，您可能需要控制正在运行的并行会话数。为此，您可以使用 -w n 命令标志（其中 n 是所需的进程数）。selenium-side-runner -w 10 --server http://localhost:4444/wd/hub运行器将自动将工作进程数量设置为计算机上可用的 CPU 核心数量。在大多数情况下，这是最佳选择。Chrome 特定功能如果您将 Chrome 安装在计算机的非标准位置，则可以指定路径，以便 ChromeDriver 知道要查找的位置。selenium-side-runner -c "goog:chromeOptions.binary='/path/to/non-standard/Chrome/install'"使用特定于 Chrome 的功能，您还可以轻松运行无头测试等。selenium-side-runner -c "goog:chromeOptions.args=[disable-infobars, headless]"便捷的框架特性运行器还提供其他一些便利功能，即您期望在传统测试自动化框架中可以使用的东西。更改基本 URL通过指定其他基本 URL 的能力，您可以轻松地将测试指向不同的环境（例如，本地开发、测试、预发布、生产）。selenium-side-runner --base-url https://localhost筛选测试您还可以选择使用 --filter target 命令标志（其中 target 是正则表达式值）运行测试的目标子集。包含给定搜索条件的测试名称将是唯一运行的测试名称。selenium-side-runner --filter smoke将测试结果输出到文件如果需要将测试结果导出到文件中（例如，作为 CI 进程的一部分运行时），则可以使用 --output-directory 和 --output-format 标志的组合。--output-directory 定义放置测试结果文件的位置。它可以采用绝对路径或相对路径。--output-format 定义用于测试结果文件的格式。它可以是 jest（例如，JSON）或 junit（例如，XML）。默认格式为 jest（例如，如果您未指定类型）。selenium-side-runner --output-directory=results # 在 ./results/projectName.json 输出 jest 格式的结果 selenium-side-runner --output-directory=results --output-format=jest # 在 ./results/projectName.json 输出 jest 格式的结果 selenium-side-runner --output-directory=results --output-format=junit # 在 ./results/projectName.xml 输出 junit 格式的结果指定默认配置您不必记住所有需要的命令行参数（这些参数可能很笨拙），而是可以将运行时参数存储在配置文件中。您可以使用两种配置文件。选项 1在将要运行测试的目录中创建一个 .side.yml 文件。运行器将自动读取它。这是文件内容的示例：capabilities: browserName: "firefox" baseUrl: "https://www.seleniumhq.org" server: "http://localhost:4444/wd/hub"如果要忽略文件并改用命令行参数，请在运行时与其他命令一起使用 --no-sideyml。选项 2除了使用 .side.yml 文件之外，您还可以在 YAML 文件中使用您选择的名称和位置指定运行时参数，然后在运行测试时指定其位置。selenium-side-runner --config-file "/path/to/your/config.yaml"注意：使用 --config-file 标志时，.side.yml 将被忽略。Selenium IDE 配置在套件中测试并行化开箱即用，运行器并行执行套件，但是套件中的测试是顺序执行的。要在给定套件中并行运行测试，您需要在 Selenium IDE 中更新该套件的设置。切换到 Selenium IDE 中的 Test Suites 视图。点击您要配置的套件名称旁边的下拉菜单，然后点击 Settings。单击复选框 Run in parallel。请点击 Submit。保存您的 Selenium IDE 项目文件。要配置多个套件以这种方式运行，请在每个套件中重复步骤 1-4。完成后，请确保保存项目文件。高级选项其他参数Selenium IDE 的插件可以指定自己的唯一运行时参数。您可以通过 --params 标志使用它们。此选项采用各种选项的字符串（类似于您指定功能的方式）。基本用法您指定参数的名称及其值。最基本的方法是指定一个字符串值。selenium-side-runner --params "a='example-value'"嵌套参数也可以使用点符号嵌套参数。selenium-side-runner --params "a.b='another example-value'"数组值除了字符串，还可以指定字母数字值的数组。selenium-side-runner --params "a.b.c=[1,2,3]"多个参数--params 只能被调用一次，但是您可以通过空格分隔来指定多个参数。selenium-side-runner --params "a='example-value' a.b='another example-value' a.b.c=[1,2,3]"使用代理服务器您可以使用运行器中的以下选项将代理功能传递给浏览器。直接代理 (Direct Proxy.html)此选项将 WebDriver 配置为绕过所有浏览器代理。在命令行中：selenium-side-runner --proxy-type=direct在 .side.yaml 中：proxyType: direct手动代理 (Manual Proxy.html)手动配置浏览器代理。在命令行中：selenium-side-runner --proxy-type=manual --proxy-options="http=localhost:434 bypass=[http://localhost:434, http://localhost:8080]"在 .side.yaml 中：proxyType: manual proxyOptions: http: http://localhost:434 https: http://localhost:434 ftp: http://localhost:434 bypass: - http://localhost:8080 - http://host:434 - http://somethingelse:32PAC 代理 (PAC Proxy.html)配置 WebDriver 以使用给定 URL 处的 PAC 文件设置浏览器代理。在命令行中：selenium-side-runner --proxy-type=pac --proxy-options="http://localhost/pac"在 .side.yaml 中：proxyType: pac proxyOptions: http://localhost/pacSOCKS 代理为 SOCKS 代理创建代理配置。在命令行中：selenium-side-runner --proxy-type=socks --proxy-options="socksProxy=localhost:434 socksVersion=5"在 .side.yaml 中：proxyType: socks proxyOptions: socksProxy: localhost:434 socksVersion: 5系统代理 (System Proxy.html)配置 WebDriver 以使用当前系统的代理。在命令行中：selenium-side-runner --proxy-type=system在 .side.yaml 中：proxyType: system代码导出如果您想学习如何将记录的测试转换为 WebDriver 代码，或者想要将记录的测试集成到现有的自定义测试框架中，则需要的是代码导出，现在可用于某些语言。您可以 在此处了解更多信息！说明：文中提到的 Node.js 版本（8 或 10）可能已过时，建议参考官方最新文档确认兼容性。
Selenium IDE 使用指南一（爬虫脚本录制器）Selenium IDE 使用指南二（命令行运行器）Selenium IDE 使用指南三（控制流）Selenium IDE 使用指南四（代码导出）Selenium IDE 使用指南五（常见问题）Selenium IDE 使用指南六（指令列表）Selenium IDE 使用指南七（参数定义）入门您可以通过右键点击测试用例（Test Case）或测试套件（Test Suite），选择 Export（导出），选择目标语言，然后再次点击 Export 按钮，将测试脚本导出为 WebDriver 代码。导出操作会将包含目标语言代码的文件保存至浏览器的默认下载目录中。源跟踪代码注释（Origin Tracing Code Comments）导出时，提供了一个可选的切换开关，用于启用源跟踪代码注释。启用后，导出的文件中将包含内联代码注释，其中详细记录了生成该文件的 Selenium IDE 中的具体测试步骤信息。支持的导出格式当前，Selenium IDE 支持导出到以下编程语言及测试框架：C# NUnitC# xUnitJava JUnitJavaScript MochaPython pytestRuby RSpec我们计划在每种语言的至少一个测试框架中，支持所有官方认可的 Selenium 编程语言绑定（例如 Java、JavaScript、C#、Python 和 Ruby）。欢迎社区提供帮助，以添加对新语言或特定测试框架的支持。有关详细信息，请参阅 如何贡献 章节。C# NUnitC# NUnit 的导出代码构建为与 .NET Core、NUnit 3.11 及最新版本的 Selenium 配合使用。要创建一个与 NUnit 配合使用的新样板项目，请使用以下 dotnet new 命令：dotnet new nunit -n NUnit-Tests --framework netcoreapp2.0使用以下 .csproj 文件，您可以通过 dotnet restore 命令安装正确的软件包和版本： <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.csprojC# xUnitC# xUnit 的导出代码构建为与 C#、xUnit 及最新版本的 Selenium 配合使用。与 C# NUnit 类似，您可以使用 .NET 工具安装依赖项，并在安装后运行项目（例如使用 Install-Package Selenium.WebDriver 或 dotnet add package Selenium.WebDriver）。要创建一个与 xUnit 配合使用的新样板项目，请使用以下 dotnet new 命令：dotnet new xUnitTests使用以下 .csproj 文件，您可以通过 dotnet restore 命令安装正确的软件包和版本： <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.csprojJava JUnitJava 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 MochaJavaScript 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 pytestPython pytest 的导出代码可与 Python 3、pytest 4.6.x 及最新版本的 Selenium 配合使用。安装这些依赖项（例如使用 pip3 install）后，您应该能够获取导出的 Python 文件 并运行它。这是一个示例 requirements.txt，可帮助您入门：pytest == 4.6.3 selenium == 4.0.0a1pip3 install -r ./requirements.txtRuby RSpecRuby 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-export 的 package.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 的最新稳定版本，并相应调整配置文件。
Selenium IDE 使用指南七（参数定义）系列文章导航Selenium IDE 使用指南一（爬虫脚本录制器）Selenium IDE 使用指南二（命令行运行器）Selenium IDE 使用指南三（控制流）Selenium IDE 使用指南四（代码导出）Selenium IDE 使用指南五（常见问题）Selenium IDE 使用指南六（指令列表）Selenium IDE 使用指南七（参数定义）本文档整理了 Selenium IDE 命令中常用的参数定义。在使用各类指令（Command）时，正确理解这些参数的含义与格式对于编写稳定的自动化脚本至关重要。参数详解alertText描述：要检查的警告框（Alert）中的文字内容。answer描述：响应弹出提示框（Prompt）时提供的答案。attributeLocator描述：元素定位符，后跟 @ 符号及属性名称。示例：foo@bararrayVariableName描述：包含 JavaScript 数组的变量名称。conditionalExpression描述：返回布尔结果（Boolean）的 JavaScript 表达式，用于控制流命令。coord参数名：coord string描述：指定鼠标事件相对于定位器所找到元素的 x, y 坐标位置。示例：-10,20expectedValue描述：您期望变量包含的结果（例如 true、false 或其他特定值）。expression描述：您要存储的值或表达式。formLocator参数名：form Locator描述：要提交的表单的元素定位器。handle参数名：window handle描述：代表特定页面（选项卡或窗口）的句柄。iteratorVariableName参数名：迭代器变量名称描述：在循环控制流命令中迭代集合时使用的变量名称（例如，用于 each 循环的变量）。json描述：JavaScript 对象的字符串表示形式（JSON 字符串）。keySequence参数名：按键序列描述：可以键入的键序列，用于发送键击。示例：${KEY_ENTER}locator参数名：定位器描述：元素定位器（Element Locator）。locatorOfDragDestinationObject参数名：拖动目标对象的定位器描述：目标元素的定位器，该元素的位置（例如中心像素）将成为被拖动对象放置的点。locatorOfObjectToBeDragged参数名：要拖动的对象的定位器描述：要被拖动的元素的定位器。loopLimit参数名：循环限制描述：可选参数，指定循环控制流命令可以执行的最大次数，用于防止无限循环。默认值：1000message描述：要打印的消息内容。optionLocator参数名：选项描述：一个选项定位器，通常只是一个选项标签。示例：John Smithpattern参数名：text描述：完全匹配的字符串，支持模式匹配。参考：有关详细信息，请参见 GitHub Issue #141。region参数名：区域描述：指定一个具有坐标和长度的矩形区域。示例：x:257,y:300,width:462,height:280resolution参数名：分辨率描述：使用 宽 x 高 指定窗口分辨率。示例：1280x800script描述：要运行的 JavaScript 代码段。selectLocator参数名：选择定位器描述：标识下拉菜单（Select）的元素定位器。testcase参数名：测试用例描述：项目中的测试用例名称。text参数名：文本描述：要使用的文字内容。times描述：控制流循环将执行其块内命令的次数。url描述：要打开的 URL（可以是相对路径或绝对路径）。value描述：要输入的值。variableName参数名：变量名描述：不带括号的变量名称。waitTime参数名：等待时间描述：等待时间，单位为毫秒（ms）。xpath描述：要评估的 XPath 表达式。说明：本文档基于 Selenium IDE 主流版本整理，部分参数行为可能随版本更新（如 Selenium IDE 3.x 至 4.x）而有所调整。在实际使用中，请以当前安装版本的官方文档或指令提示为准。
Selenium IDE使用指南一（爬虫脚本录制器）Selenium IDE使用指南二（命令行运行器）Selenium IDE使用指南三（控制流）Selenium IDE使用指南四（代码导出）Selenium IDE使用指南五（常见问题）Selenium IDE使用指南六（指令列表）Selenium IDE使用指南七（参数定义）alertText名称：alertText描述：要检查的文字*answer名称：answer描述：响应弹出提示而给出的答案。*attributeLocator名称：attributeLocator描述：元素定位符，后跟一个@符号，然后是属性名称，例如“ foo @ bar”。*arrayVariableName名称：arrayVariableName描述：包含JavaScript数组的变量的名称。*conditionalExpression名称：conditionalExpression描述：返回一个布尔结果以用于控制流命令的JavaScript表达式。*coord名称：coord stringdescription：指定鼠标事件相对于从定位器找到的元素的x，y位置（例如-10,20）。*expectedValue名称：expectedValue描述：您希望变量包含的结果（例如，true，false或其他某个值）。*expression名称：expression描述：您要存储的值。*formLocator名称：form Locator描述：要提交的表单的元素定位器。*handle名称：window handle描述：代表特定页面（选项卡或窗口）的句柄。*iteratorVariableName名称：迭代器变量名称描述：在循环控制流命令中迭代集合时使用的变量名称（例如，每个变量）。*json名称：jsondescription：JavaScript对象的字符串表示形式。*keySequence名称：按键序列描述：可以键入的键序列可用于发送键击（例如$ {KEY\_ENTER}）。*locator名称：定位器描述：元素定位器。*locatorOfDragDestinationObject名称：拖动目标对象的定位器描述：元素的定位器，其位置（例如，其中最中心的像素）将成为要拖动的对象的定位器被放置的点。*locatorOfObjectToBeDragged名称：要拖动的对象的定位器描述：要拖动的元素的定位器。*loopLimit名称：循环限制描述：可选参数，指定循环控制流命令可以执行的最大次数。这样可以防止无限循环。默认值设置为1000。*message名称：message描述：要打印的消息。*optionLocator名称：选项描述：一个选项定位器，通常只是一个选项标签（例如“ John Smith”）。*pattern名称：text描述：完全匹配的字符串。正在支持模式匹配。有关详细信息，请参见https://github.com/SeleniumHQ/selenium-ide/issues/141。*region名称：地区描述：指定一个具有坐标和长度的矩形（例如，“ x：257，y：300，宽度：462，高度：280”）。*resolution名称：分辨率描述：使用WidthxHeight指定窗口分辨率。（例如1280x800）。*script名称：脚本描述：要运行的JavaScript代码段。*selectLocator名称：选择定位器描述：标识下拉菜单的元素定位器。*testcase名称：测试用例描述：项目中的测试用例名称。*text名称：文字说明：要使用的文字。*times名称：times描述：控制流循环将执行其块内命令的尝试次数。*url名称：urldescription：要打开的URL（可以是相对的或绝对的）。*value名称：值描述：要输入的值。*variableName名称：变量名描述：不带括号的变量名称。*waitTime名称：等待时间描述：等待时间（以毫秒为单位）。*xpath名称：xpath描述：要评估的xpath表达式。*
Selenium IDE 使用指南一（爬虫脚本录制器）Selenium IDE 使用指南二（命令行运行器）Selenium IDE 使用指南三（控制流）Selenium IDE 使用指南四（代码导出）Selenium IDE 使用指南五（常见问题）Selenium IDE 使用指南六（指令列表）Selenium IDE 使用指南七（参数定义）Selenium IDE 提供的命令允许您在测试中添加条件逻辑和循环结构。这使得您仅在满足应用程序中的特定条件时才执行命令（或一组命令），或根据预定义的标准重复执行命令。JavaScript 表达式您可以通过 JavaScript 表达式来检查应用程序中的条件。在测试过程中的任何时候，您都可以使用 execute script 或 execute async script 命令运行一段 JavaScript 代码，并将结果存储在变量中。这些变量随后可以在控制流命令中使用。此外，您也可以直接在控制流命令中使用 JavaScript 表达式。可用命令控制流命令通过指定“打开”和“关闭”命令来标识一组命令（或代码块）。以下是每个可用的控制流命令及其对应的伴随命令和关闭命令：if，else if，else，endtimes，enddo，repeat ifwhile，end下面将逐一介绍这些命令的示例。条件分支条件分支允许您根据特定情况更改测试中的行为。if这是条件块的起始命令。您需要提供要评估的 JavaScript 表达式。该表达式可以包含由测试中之前的 JavaScript 表达式创建的变量。所有内容均输入到 if 命令的 target 输入字段中。如果表达式评估为 true，测试将执行其后的命令，直到遇到下一个条件控制流命令（例如 else if、else 或 end）。若表达式计算结果为 false，将跳过随后的命令并跳转到下一个相关的条件控制流命令（例如 else if、else 或 end）。else if该命令在 if 命令块中使用。与 if 命令类似，它在 target 输入字段中使用 JavaScript 表达式进行求值。如果条件满足，则执行其后的命令分支；否则跳转到下一个相关的控制流命令（例如 else 或 end）。elseelse 是 if 区块中可以拥有的最终条件分支。如果不满足任何先前的条件，则将执行此命令分支。执行完成后，流程将跳转到 end 命令。end该命令用于终止条件命令块。如果没有此命令，命令块将不完整，您在尝试运行测试时会收到一条错误消息提示。循环循环允许您遍历给定的命令集。times使用 times 命令，您可以指定要执行的命令集的迭代次数。该数字输入到 times 命令的 target 输入字段中。要关闭 times 命令块，请确保使用 end 命令。do此循环以 do 命令开始，随后是要执行的命令，最后以 repeat if 命令结束。repeat if 接受您要在 target 输入字段中求值的 JavaScript 表达式。do 会先执行其后的命令，然后再对 repeat if 中的表达式求值。如果表达式返回 true，测试将跳回到 do 命令并重复该序列。这将一直持续到条件返回 false 或触发无限循环保护机制（默认为 1000 次尝试）。您可以通过在 repeat if 命令的 value 输入字段中指定一个数字来覆盖此默认值。while通过 while 提供 JavaScript 表达式，您希望在 target 输入字段中对其进行求值。如果求值结果为 true，命令块将继续执行直到到达 end 命令。完成后，测试将跳回到 while 命令并重复相同的顺序（首先检查条件是否变为 true 或 false）。要关闭 while 命令块，请使用 end 命令。循环将重试，直到条件返回 false 或无限循环保护被触发为止（默认为 1000 次尝试）。您可以通过在 while 命令的 value 输入字段中指定一个数字来覆盖此默认值。forEachforEach 允许您遍历集合（例如 JavaScript 数组），并在执行过程中引用集合中的每个项目。在 target 字段中，指定包含要迭代的数组的变量名称。在 value 字段中，指定要使用的迭代器变量名称。对于数组中的每个条目，将执行后续命令。在每次迭代期间，将通过迭代器变量访问当前条目的内容。命令嵌套您可以根据需要嵌套控制流命令（例如，一个 if 块可以放在一个 while 块内部，反之亦然）。语法验证如果不确定控制流语法是否正确，请尝试运行测试以查看结果。IDE 将发现控制流语法中的错误，并调出不正确或丢失的特定命令提示。说明本文基于 Selenium IDE 3.x 及以上版本（Standalone 版本）的功能编写。控制流命令（Control Flow）在旧版 Firefox 插件版本中可能不可用或行为不同。如果您使用的是最新版本，请确保已启用控制流插件或功能。
Selenium IDE 使用指南系列Selenium IDE 使用指南一（爬虫脚本录制器）Selenium IDE 使用指南二（命令行运行器）Selenium IDE 使用指南三（控制流）Selenium IDE 使用指南四（代码导出）Selenium IDE 使用指南五（常见问题）Selenium IDE 使用指南六（指令列表）Selenium IDE 使用指南七（参数定义）安装您可以从以下浏览器的官方网络商店安装 Selenium IDE：Chrome 网上应用店Firefox 附加组件商店启动 IDE安装完成后，点击浏览器菜单栏中的 Selenium IDE 图标即可启动。故障排除如果在菜单栏中没有看到 Selenium IDE 的图标，请尝试以下方法：选项 1：检查扩展程序设置确保已在浏览器的扩展程序设置中启用了 IDE。您可以在地址栏输入以下地址并按 Enter 键快速跳转：Chrome: chrome://extensionsFirefox: about:addons选项 2：检查工具栏隐藏设置扩展程序可能已启用，但图标被隐藏。尝试调整浏览器工具栏的大小以提供更多空间。Chrome: 点击地址栏右侧的分隔符，按住鼠标左键并向左或向右拖动。Firefox: 右键点击工具栏空白处，选择 Customize（自定义），调整菜单栏布局后点击 Done（完成）。欢迎屏幕启动 IDE 后，将显示欢迎对话框。您可以快速访问以下选项：在新项目中记录新测试打开一个现有项目创建一个新项目关闭 IDE如果您是首次使用 IDE（或正在启动新项目），请选择第一个选项。记录您的第一个测试创建新项目后，系统会提示您命名项目并提供基础 URL（Base URL）。基础 URL 是您正在测试的应用程序的地址，只需设置一次，它将应用于该项目中的所有测试。如有需要，您稍后也可以更改此设置。完成设置后，将打开一个新的浏览器窗口加载基础 URL，并自动开始记录。与页面进行交互时，您的每个操作都会被记录在 IDE 中。要停止录制，请切换回 IDE 窗口，然后点击录制图标。整理测试测试 (Tests.html)您可以通过以下步骤添加新测试：点击左侧工具栏菜单顶部（Tests 标题右侧）的 + 符号。命名测试。点击 ADD。添加测试后，您可以手动输入命令，也可以点击 IDE 右上角的录制图标进行录制。测试套件 (Suites.html)可以将多个测试分组到套件中以便管理。创建项目时，系统会自动创建一个 Default Suite，并将您的第一个测试自动添加到其中。要创建和管理套件，请转到 Test suites 面板。您可以通过点击左侧工具栏菜单顶部的下拉菜单（例如点击 Tests 字样）并选择 Test suites 进入该面板。添加套件点击左侧栏菜单顶部 Test Suites 标题右侧的 + 符号。提供名称。点击 ADD。添加测试到套件要将测试添加到套件中，请将鼠标悬停在套件名称上，然后执行以下操作：点击 Test Suites 标题右侧显示的图标。点击 Add tests。从菜单中选择要添加的测试。点击 Select。删除测试要删除测试，请将鼠标悬停在该测试上，然后点击名称右侧显示的 X 图标。删除或重命名套件删除套件: 点击套件名称右侧出现的图标，选择 Delete，并在提示时再次点击 Delete 确认。重命名套件: 点击套件名称右侧出现的图标，选择 Rename，更新名称后点击 RENAME。保存工作要保存您在 IDE 中的所有操作，请点击 IDE 右上角的保存图标。系统将提示您输入保存项目的位置和名称。最终结果是一个带有 .side 扩展名的单个文件。回放浏览器内您可以在 IDE 中直接播放测试。选择要播放的测试或套件，然后点击测试编辑器上方菜单栏中的播放按钮。测试将在浏览器中执行。如果录制时打开的窗口仍未关闭，系统将使用该窗口；否则，将打开并使用一个新窗口。跨浏览器如果需要在其他浏览器上运行 IDE 测试，请确保安装命令行运行器（CLI Runner）。有关详细信息，请参阅本系列指南的第二部分。说明：本文内容基于 Selenium IDE v3+ 版本（浏览器扩展版）。旧版 Selenium IDE（v2 及以前）仅支持 Firefox 且功能有所不同，请注意区分。
系列文章导航Selenium IDE 使用指南一（爬虫脚本录制器）Selenium IDE 使用指南二（命令行运行器）Selenium IDE 使用指南三（控制流）Selenium IDE 使用指南四（代码导出）Selenium IDE 使用指南五（常见问题）Selenium IDE 使用指南六（指令列表）Selenium IDE 使用指南七（参数定义）如何记录悬停（Hover）操作？鼠标悬停（Hover）操作很难在录制过程中被自动捕获。若需在测试中添加鼠标悬停操作，需要进行一些手动干预。您可以通过以下两种方式实现：选项 1：在录制时添加录制时，右键单击需要悬停的元素。在出现的菜单中，单击 Selenium IDE，然后选择 Mouse Over。确认 Mouse Over 测试步骤在测试中的位置正确（如有需要，可将其拖放至其他位置）。选项 2：在测试编辑器中手动添加在 IDE 中右键单击测试步骤。选择 Insert new command（插入新命令）。在 Command 输入字段中输入 mouse over。在 Target 输入字段中输入要悬停元素的定位器（或单击 Select target in page 并选择页面上要悬停的元素）。为什么在日期输入字段中键入的数字不能正确显示？此问题通常出现在通过 Selenium IDE 的命令行运行器（Command Line Runner）运行测试时。要解决此问题，您需要启用 W3C 模式。您可以在启动运行程序时通过传递参数 -c "chromeOptions.w3c=true" 来实现。注意：启用 W3C 模式可能会影响 Selenium Actions 的性能。如果您的测试未涉及相关操作，建议仅在遇到日期输入字段问题时使用此模式。如何让 IDE 等待特定条件成立才能继续进行？在某些情况下，IDE 中的内置等待策略可能不够用。此时，可以使用可用的显式等待命令之一：wait for element editablewait for element presentwait for element visiblewait for element not editablewait for element not presentwait for element not visible如何在文本验证中使用正则表达式？这是计划在未来添加的功能（详情请参阅 GitHub Issue #141）。目前的解决方法是：将 XPath 定位器与 starts-with 和 contains 关键字结合使用。例如：command: assertElementPresent target: //a@[starts-with(.,'you are the'.html) and contains(.,'User to log in today'.html)]如何滚动页面？Selenium IDE 中没有专门用于滚动的命令，因为 Selenium 核心中也未实现此类命令。相反，您可以使用 executeScript 命令执行 JavaScript 中的 scrollTo 方法，通过指定 x 和 y 坐标滚动到所需位置。command: executeScript target: window.scrollTo(0, 1000.html)保存文件相关问题为什么保存 Selenium IDE 项目的位置未被记住？为什么每次保存项目时都需要逐步执行“另存为”流程？为什么需要覆盖以前保存的文件？所有这些问题都源于同一个限制：浏览器扩展版的 Selenium IDE 无法直接访问文件系统。目前提供“保存”功能的唯一方法是通过浏览器下载文件。当 IDE 完全迁移至本机应用程序（Native Application）时，此问题将得到解决。这将使 IDE 拥有首要的文件系统访问权限，从而提供更完善的“保存”体验。如果要保持关注此功能的更新，可以参考 GitHub Issue #363。如何在严格的代理/防火墙后面安装 IDE？在某些企业环境中，您可能没有完全的公共 Internet 访问权限（例如位于公司代理或防火墙后面）。在这些环境中，您需要获取内置的 Selenium IDE ZIP 文件副本，以便离线记录自动测试脚本。可以在 GitHub 的 Releases 部分找到相关文件：https://github.com/SeleniumHQ/selenium-ide/releases注意：并非所有版本都包含 selenium-ide.zip，因为其中一些仅仅是“源代码”版本。请查找包含此 ZIP 文件的最新版本，这通常意味着它是提交给 Chrome 和 Firefox 商店的最新构建版。正式签署的版本从项目发行页面下载的 ZIP 文件通常是未签名的。或者，您可以从以下位置获取经过正式签名的安装程序，这些安装程序在“安全环境”中兼容性更好：Firefox 附加组件下载地址：Firefox Add-ons所需的 .xpi 安装程序下载说明：How to save Firefox addons for offline installation注意：如果您已经安装了插件（例如在便携式计算机上尝试获取安装程序副本），在访问扩展管理页面时可能只会看到“删除”按钮。因此，建议先将其删除，让安装程序移至另一台未连接的计算机，然后根据需要在主设备的浏览器中重新安装。Chrome 商店下载地址：Chrome Web Store所需的 .crx 安装程序下载说明：How to download a Chrome extension without installing it注意：您不能直接从 Chrome 商店中获取 .crx 文件。相反，您需要在本地安装一次，然后转到计算机上的安装目录进行检索。附加了插件后，为什么没有保存对话框出现？由于已知的 Chrome 错误 (Issue 922373.html)，如果您不答复 Selenium IDE 发出的消息，则不会进行进一步处理。为了解决此问题，请确保侦听 project 实体的 emit 操作，并使用 undefined 进行回复：chrome.runtime.onMessageExternal.addListener((message, sender, sendResponse.html) => { if (message.action === "emit" && message.entity === "project".html) { sendResponse(undefined.html); } });说明：本文部分内容基于 Selenium IDE 特定版本编写（涉及浏览器扩展与本机应用的过渡期）。随着 Selenium IDE 版本迭代（如 v4.x 及以上），部分功能（如文件保存机制、命令行参数）可能有所变化，请以官方最新文档为准。
系列导航Selenium IDE 使用指南一（爬虫脚本录制器）Selenium IDE 使用指南二（命令行运行器）Selenium IDE 使用指南三（控制流）Selenium IDE 使用指南四（代码导出）Selenium IDE 使用指南五（常见问题）Selenium IDE 使用指南六（指令列表）Selenium IDE 使用指南七（参数定义）指令列表以下是 Selenium IDE 常用指令的详细说明，包含指令功能描述及参数定义。add selection将选项添加到多选元素（Multi-select）的选定项集合中。参数locator：元素定位器。value：要添加的值。answer on next prompt用于处理下一个弹出的提示框（Prompt）。此命令将向提示框发送指定的答案字符串。如果提示框已存在，请改用 webdriver answer on visible prompt。参数答案：提示框弹出时给出的答案。assert硬断言：检查变量是否为期望值。变量的值将转换为字符串进行比较。若断言失败，测试将立即停止。参数变量名：不带括号的变量名。期望值：您期望变量包含的结果（例如 true、false 或其他值）。assert alert硬断言：确认已使用提供的文本呈现警告框（Alert）。若断言失败，测试将立即停止。参数提示文字：要检查的文字。assert checked硬断言：确认目标元素已被选中（Checked）。若断言失败，测试将立即停止。参数locator：元素定位器。assert confirmation硬断言：确认已提交确认框（Confirmation）。若断言失败，测试将立即停止。参数text：要使用的文本。assert editable硬断言：确认目标元素是可编辑的。若断言失败，测试将立即停止。参数locator：元素定位器。assert element present硬断言：确认目标元素存在于页面上的某处。若断言失败，测试将立即停止。参数locator：元素定位器。assert element not present硬断言：确认目标元素不在页面上任何地方。若断言失败，测试将立即停止。参数locator：元素定位器。assert not checked硬断言：确认目标元素未被选中。若断言失败，测试将立即停止。参数locator：元素定位器。assert not editable硬断言：确认目标元素不可编辑。若断言失败，测试将立即停止。参数locator：元素定位器。assert not selected value硬断言：确认下拉元素中所选选项的 value 属性不包含提供的值。若断言失败，测试将立即停止。参数select locator：标识下拉菜单的元素定位器。text：完全匹配的字符串。支持模式匹配，详情请参见 GitHub Issue #141。assert not text硬断言：确认元素的文本不包含提供的值。若断言失败，测试将立即停止。参数locator：元素定位器。text：完全匹配的字符串。支持模式匹配，详情请参见 GitHub Issue #141。assert prompt硬断言：确认已呈现 JavaScript 提示框。若断言失败，测试将立即停止。参数text：要使用的文本。assert selected value硬断言：确认下拉元素中所选选项的 value 属性包含提供的值。若断言失败，测试将立即停止。参数select locator：标识下拉菜单的元素定位器。text：完全匹配的字符串。支持模式匹配，详情请参见 GitHub Issue #141。assert selected label硬断言：确认下拉菜单中所选选项的标签（Label）包含提供的值。若断言失败，测试将立即停止。参数select locator：标识下拉菜单的元素定位器。text：完全匹配的字符串。支持模式匹配，详情请参见 GitHub Issue #141。assert text硬断言：确认元素的文本包含提供的值。若断言失败，测试将立即停止。参数locator：元素定位器。text：完全匹配的字符串。支持模式匹配，详情请参见 GitHub Issue #141。assert title硬断言：确认当前页面的标题包含提供的文本。若断言失败，测试将立即停止。参数text：完全匹配的字符串。支持模式匹配，详情请参见 GitHub Issue #141。assert value硬断言：确认输入字段的值（或其他带有 value 属性的值）。对于复选框/单选元素，根据是否选中该元素，其值为 on 或 off。若断言失败，测试将立即停止。参数locator：元素定位器。text：完全匹配的字符串。支持模式匹配，详情请参见 GitHub Issue #141。check选中一个切换按钮（复选框/单选按钮）。参数locator：元素定位器。choose cancel on next confirmation影响下一个确认框（Confirmation）。此命令将取消它。如果确认框已经存在，请使用 webdriver choose cancel on visible confirmation。choose cancel on next prompt影响下一个提示框（Prompt）。此命令将取消它。如果提示框已经存在，请使用 webdriver choose cancel on visible prompt。choose ok on next confirmation影响下一个确认框（Confirmation）。此命令将接受它。如果确认框已经存在，请使用 webdriver choose ok on visible confirmation。click单击目标元素（例如链接、按钮、复选框或单选按钮）。参数locator：元素定位器。click at单击目标元素的特定坐标位置。坐标是相对于目标元素的（例如 0,0 是元素的左上角），主要用于检查在其上触发的事件效果（如 Material Ripple 效果）。参数locator：元素定位器。坐标字符串：指定鼠标事件相对于从定位器找到的元素的 x,y 位置（例如 10,20）。close关闭当前窗口。无需关闭初始窗口，IDE 会重新使用它；关闭它可能会导致测试性能下降。debugger中断执行并进入浏览器调试器。do创建一个至少执行一次命令的循环。使用 repeat if 命令终止分支。double click双击元素（例如链接、按钮、复选框或单选按钮）。参数locator：元素定位器。double click at双击目标元素的特定坐标位置。坐标是相对于目标元素的，主要用于检查在其上触发的事件效果。参数locator：元素定位器。坐标字符串：指定鼠标事件相对于从定位器找到的元素的 x,y 位置。drag and drop to object拖动一个元素并将其拖放到另一个元素上。参数要拖动的对象的定位器：要拖动元素的定位器。拖动目标对象的定位器：放置元素点的定位器（其位置将成为要拖动的对象的目标）。echo将指定的消息打印到日志中。对于调试很有用。参数message：要打印的消息。edit content设置内容可编辑元素（contenteditable）的值，就像您在其中键入一样。参数locator：元素定位器。value：要输入的值。elseif 块的一部分。如果不满足 if 和/或 else if 条件，请在此分支中执行命令。使用 end 命令终止分支。else ifif 块的一部分。如果不满足 if 条件，请在此分支中执行命令。使用 end 命令终止分支。参数条件表达式：JavaScript 表达式，返回布尔值以用于控制流命令。end终止控制流块（if、while、times、do 等）。execute script在当前选定的框架或窗口的上下文中执行一段 JavaScript。脚本片段将作为匿名函数的主体执行。要存储返回值，请使用 return 关键字，并在值输入字段中提供一个变量名称。参数script：要运行的 JavaScript 代码段。变量名：不带括号的变量名。execute async script在当前选定的框架或窗口的上下文中执行 JavaScript 的异步代码段。该脚本片段将作为匿名函数的主体执行，并且必须返回 Promise。如果您使用 return 关键字，则 Promise 结果将保存在变量中。参数script：要运行的 JavaScript 代码段。变量名：不带括号的变量名。for each创建一个循环，为给定集合中的每个项目执行命令。参数数组变量名称：包含 JavaScript 数组的变量的名称。迭代器变量名称：在循环控制流命令中迭代集合时使用的变量名称。if在测试中创建一个条件分支。使用 end 命令终止分支。参数条件表达式：JavaScript 表达式，返回布尔值以用于控制流命令。mouse down模拟用户按下鼠标左键（尚未释放）。参数locator：元素定位器。mouse down at模拟用户在指定位置按下鼠标左键（尚未释放）。参数locator：元素定位器。坐标字符串：指定鼠标事件相对于从定位器找到的元素的 x,y 位置。mouse move at模拟用户在指定元素上移动鼠标。参数locator：元素定位器。坐标字符串：指定鼠标事件相对于从定位器找到的元素的 x,y 位置。mouse out模拟用户将鼠标指针从指定元素移开。参数locator：元素定位器。mouse over模拟用户将鼠标悬停在指定元素上。参数locator：元素定位器。mouse up模拟当用户释放鼠标按钮时发生的事件。参数locator：元素定位器。mouse up at模拟当用户在指定位置释放鼠标按钮时发生的事件。参数locator：元素定位器。坐标字符串：指定鼠标事件相对于从定位器找到的元素的 x,y 位置。open打开 URL，然后等待页面加载，然后继续。这既接受相对 URL，也接受绝对 URL。参数url：要打开的 URL（可以是相对的或绝对的）。pause等待指定的时间。参数等待时间：等待时间（以毫秒为单位）。remove selection使用选项定位器从多选元素中的一组选定选项中删除一个选择。参数locator：元素定位器。option：一个选项定位器，通常只是一个选项标签（例如 John Smith）。repeat if有条件地终止 do 控制流分支。如果提供的条件表达式的结果为 true，则它将重新开始 do 循环。否则，它将结束循环。参数条件表达式：JavaScript 表达式，返回布尔值以用于控制流命令。run从当前项目运行测试用例。参数测试用例：项目中的测试用例名称。run script在当前测试窗口的主体中创建一个新的 script 标签，并将指定的文本添加到命令主体中。请注意，这些脚本标签中引发的 JS 异常不是由 Selenium 管理的，因此，如果脚本有可能引发异常，则应该将脚本包装在 try/catch 块中。参数script：要运行的 JavaScript 代码段。select使用选项定位器从下拉菜单中选择一个元素。选项定位符提供了指定选择元素的不同方法（例如 label=、value=、id=、index=）。如果未提供选项定位符前缀，则将尝试在标签上进行匹配。参数select locator：标识下拉菜单的元素定位器。option：一个选项定位器，通常只是一个选项标签。select frame在当前窗口中选择一个框架（Frame）。您可以通过从 0 开始的索引号来选择帧（例如，选择 index=0 的第一帧或 index=2 的第三帧）。对于嵌套框架，您将需要多次调用此命令。您可以使用 relative=parent 选择父框架。要返回页面顶部，请使用 relative=top。参数locator：元素定位器。select window使用窗口定位器选择弹出窗口。选择弹出窗口后，所有命令都将转到该窗口。窗口定位器使用句柄（Handle）选择窗口。参数窗口句柄：代表特定页面（选项卡或窗口）的句柄。send keys模拟指定元素上的击键事件，就像您按键键入值一样。这模拟真实用户在指定字符串中键入每个字符；它也受到实际用户的限制，例如不能键入不可见或只读元素。这对于需要显式键事件的动态 UI 小部件（如自动完成组合框）很有用。与简单的 type 命令直接将指定的值强制进入页面不同，该命令不会替换现有内容。参数locator：元素定位器。按键序列：可以键入的按键序列，可用于发送按键（例如 ${KEY_ENTER}）。set speed设置执行速度（例如，设置每次 Selenium 操作之后的延迟的毫秒长度）。默认情况下，不存在此类延迟（0 毫秒）。此设置是全局设置，将影响所有测试运行，直到更改。参数等待时间：等待时间（以毫秒为单位）。set window size设置浏览器的窗口大小，包括浏览器的界面。参数resolution：使用 WidthxHeight 指定窗口分辨率（例如 1280x800）。store将目标字符串另存为变量，以方便重用。参数text：要使用的文本。变量名：不带括号的变量名。store attribute获取元素属性的值。在不同的浏览器中，属性的值可能有所不同（例如 style 属性）。参数属性定位符：元素定位器，后跟 @ 符号，然后是属性名称，例如 foo@bar。变量名：不带括号的变量名。store json未定义（保留指令）。参数json：JavaScript 对象的字符串表示形式。变量名：不带括号的变量名。store text获取元素的文本并将其存储以备后用。这适用于任何包含文本的元素。参数locator：元素定位器。变量名：不带括号的变量名。store title获取当前页面的标题。参数text：要使用的文本。变量名：不带括号的变量名。store value获取元素的值并将其存储以供以后使用。这适用于任何输入类型元素。参数locator：元素定位器。变量名：不带括号的变量名。store window handle获取当前页面的句柄。参数窗口句柄：代表特定页面（选项卡或窗口）的句柄。store xpath count获取与指定 xpath 匹配的节点数（例如 //table 将给出表数）。参数xpath：要评估的 xpath 表达式。变量名：不带括号的变量名。submit提交指定的表格。这对于没有提交按钮的表单特别有用，例如单输入“搜索”表单。参数表单定位器：您要提交的表单的元素定位器。times创建一个循环执行 n 次执行命令。参数times：控制流循环将执行其块内命令的尝试次数。循环限制：一个可选参数，指定循环控制流命令可以执行的最大次数。这样可以防止无限循环。默认值设置为 1000。type设置输入字段的值，就像您在其中键入一样。也可以用于设置组合框、复选框等的值。在这种情况下，value 应该是所选选项的值，而不是可见的文本。仅限 Chrome：如果给出了文件路径，它将被上传到输入（对于 type=file）。注意：不支持 XPath 定位器。参数locator：元素定位器。value：要输入的值。uncheck取消选中切换按钮（复选框/单选）。参数locator：元素定位器。verify软断言：检查变量是否为期望值。变量的值将转换为字符串以进行比较。即使验证失败，测试也将继续。参数变量名：不带括号的变量名。期望值：您期望变量包含的结果。verify checked软断言：确认已选中切换按钮。即使验证失败，测试也将继续。参数locator：元素定位器。verify editable软断言：确认指定的输入元素是否可编辑。即使验证失败，测试也将继续。参数locator：元素定位器。verify element present软断言：确认指定的元素在页面上的某处。即使验证失败，测试也将继续。参数locator：元素定位器。verify element not present软断言：确认指定的元素不在页面上。即使验证失败，测试也将继续。参数locator：元素定位器。verify not checked软断言：确认未选中切换按钮。即使验证失败，测试也将继续。参数locator：元素定位器。verify not editable软断言：确认指定的输入元素是否不可编辑。即使验证失败，测试也将继续。参数locator：元素定位器。verify not selected value软断言：确认所期望的元素尚未在其选择属性的选择菜单中选择。即使验证失败，测试也将继续。参数select locator：标识下拉菜单的元素定位器。option：一个选项定位器。verify not text软断言：确认元素的文本不存在。即使验证失败，测试也将继续。参数locator：元素定位器。text：要使用的文本。verify selected label软断言：对指定的 select 元素中的选定选项进行验证。即使验证失败，测试也将继续。参数select locator：标识下拉菜单的元素定位器。text：完全匹配的字符串。支持模式匹配，详情请参见 GitHub Issue #141。verify selected value软断言：确认所期望的元素已通过其选项属性在选择菜单中选择。即使验证失败，测试也将继续。参数select locator：标识下拉菜单的元素定位器。option：一个选项定位器。verify text软断言：确认元素的文本存在。即使验证失败，测试也将继续。参数locator：元素定位器。text：要使用的文本。verify title软断言：确认当前页面的标题包含提供的文本。即使验证失败，测试也将继续。参数text：要使用的文本。verify value软断言：确认输入字段的值。对于复选框/单选元素，根据是否选中该元素，其值为 on 或 off。即使验证失败，测试也将继续。参数locator：元素定位器。text：完全匹配的字符串。支持模式匹配，详情请参见 GitHub Issue #141。wait for element editable等待元素可编辑。参数locator：元素定位器。等待时间：等待时间（以毫秒为单位）。wait for element not editable等待元素不可编辑。参数locator：元素定位器。等待时间：等待时间（以毫秒为单位）。wait for element not present等待目标元素不出现在页面上。参数locator：元素定位器。等待时间：等待时间（以毫秒为单位）。wait for element not visible等待目标元素在页面上不可见。参数locator：元素定位器。等待时间：等待时间（以毫秒为单位）。wait for element present等待目标元素出现在页面上。参数locator：元素定位器。等待时间：等待时间（以毫秒为单位）。wait for element visible等待目标元素在页面上可见。参数locator：元素定位器。等待时间：等待时间（以毫秒为单位）。webdriver answer on visible prompt影响当前显示的警报提示。此命令指示 Selenium 为它提供指定的答案。如果尚未出现警报，请改用 answer on next prompt。参数答案：提示弹出窗口时给出的答案。webdriver choose cancel on visible confirmation影响当前显示的确认警报。此命令指示 Selenium 取消它。如果警报尚未出现，请改用 choose cancel on next confirmation。webdriver choose cancel on visible prompt影响当前显示的警报提示。此命令指示 Selenium 取消它。如果警报尚未出现，请改用 choose cancel on next prompt。webdriver choose ok on visible confirmation影响当前显示的确认警报。此命令指示 Selenium 接受它。如果警报尚未出现，请改用 choose ok on next confirmation。while只要提供的条件表达式为 true，就创建一个循环重复执行命令。参数条件表达式：JavaScript 表达式，它返回布尔值以用于控制流命令。循环限制：一个可选参数，指定循环控制流命令可以执行的最大次数。这样可以防止无限循环。默认值设置为 1000。说明：本文档基于 Selenium IDE 3.x+ 版本（WebExtension/ standalone 版本）整理。部分指令行为可能因浏览器内核或 Selenium IDE 版本更新而略有差异，请以官方最新文档为准。