Selenium 简明教程

Selenium IDE - Control Flow

Selenium IDE 命令包含可将条件语句和循环添加到测试中的功能。这有助于仅在满足特定条件时运行一些步骤,或根据特定条件多次执行相同的步骤。

JavaScript Expressions

借助 JavaScript 表达式,可以验证待测应用程序中的条件。execute script 和 execute async script 命令用于在我们的测试中执行 JavaScript 代码并将结果保存到变量中以供将来使用。这些变量也可用于控制流命令。此外,JavaScript 表达式可与控制流命令一起使用。

Basic Control Flow Commands on Conditional Branching

基本控制流命令及其配套命令如下 -

if

这是条件分支上的起始命令,可以与要评估的 JavaScript 命令或在 JavaScript 命令之前创建的变量一起使用。这是 if 命令的 Target 输入字段的一部分。

如果该表达式返回真值,则测试将运行 if 表达式之后的步骤,直到遇到下一个控制流命令,例如 else、else if 或 end。如果表达式返回假值,则它将跳转到以下条件命令,例如 else、else if 或 end。

else if

该命令用于 if 命令块内。类似于 if 命令,else if 命令接受要评估的 JavaScript 命令。这是 else if 命令的 Target 输入字段的一部分。

如果该表达式返回真值,则测试将运行 if 表达式之后的步骤,直到遇到下一个控制流命令,例如 else、else if 或 end。如果表达式返回假值,则它将跳转到以下条件命令,例如 else 或 end。

else

此命令用于满足 if 块内的最后一个条件。如果没有满足前面任何条件,则执行 else 命令。

end

此命令用于结束条件命令块。如果没有条件块中的 end 命令,则在运行 Selenium IDE 测试时会引发错误。

Basic Control Flow Commands on Looping

以下列出了关于循环(允许重复一组命令/命令执行)的基本控制流命令 -

times

此命令用于定义需要执行的操作/动作的迭代次数。使用此命令将迭代次数输入到目标输入字段。times 命令应以 end 命令结束。

do

此命令用于开始一个循环。在 do 命令之后,将声明要执行的步骤。do 命令应以 repeat if 命令结束。repeat if 接受将在目标输入字段内执行的 JavaScript 表达式。do 命令后面的命令将初始执行,然后执行 repeat if 命令中的操作。

如果表达式返回 true 值,那么测试执行将移至下一个 do 命令,并重新执行模式。这会一直持续到条件不再得到满足或者出现无限循环的情况。默认尝试次数为 1000。可以通过在 repeat if 命令的 Value 字段中设置一个数字来修改此默认次数。

while

在此命令中,要在 Target 字段中提供要执行的 JavaScript 表达式。如果表达式返回 true 值,那么命令块将一直运行到 end 命令。同样,控件会跳回到 while 命令以重复相同的模式(每次检查 JavaScript 表达式是否产生 true 或 false 值)。while 命令应以 end 命令终止。

forEach

此命令用于循环浏览集合并在集合内引用各个项目。在 Target 字段中,应提及指向要迭代的数组的变量名。在 Value 字段中,迭代变量名称。

Example 1

我们以以下页面的示例来说明,我们将在其中使用条件分支控制流命令检查最上方出现的文本 - Welcome, Login In

selenium control flow 1

要遵循的步骤如下所示 -

Step 1 − 单击浏览器上在安装后显示的 Selenium IDE 扩展。

Step 2 − Selenium IDE 应该与它一起启动,应该显示一个显示该工具版本的欢迎消息。在下图中,安装的版本为 3.17.2。

除此之外,它还为我们提供了选择我们想使用该工具做什么的选项,例如在新项目中记录新测试、打开现有项目、创建新项目和关闭 Selenium IDE。

此外,还提供了一个显示文本 - Selenium IDE project page 的链接,点击该链接将转到 Selenium 集成开发环境文档页面。

Step 3 − 单击创建新项目链接,然后输入项目名称,如 Please provide a name for your new project 下的 Test12。最后,我们将点击确定按钮。

Step 4 − 我们现在在 Selenium IDE 中准备好了工作区。

Step 5 − 在命令字段中输入 open,然后在目标字段中输入 selenium ,以启动应用程序。

Step 6 − 在命令字段中输入存储文本,xpath=// [@id="signInForm"]/h1 in the Target field and val in the Value field. Please note, xpath=// [@id="signInForm"]/h1 是文本的定位器值,val 是我们用来存储文本的变量。

Step 7 - 输入在命令字段中,且 ${val} ==="欢迎,登录" 在目标字段中。

Step 8 - 输入 echo 在命令字段中,且验证正确 在目标字段中。

Step 9 - 输入如果其他 在命令字段中,且 ${val} ==="欢迎,注册" 在目标字段中。

Step 10 - 输入 echo 在命令字段中,且验证不正确 在目标字段中。

Step 11 - 输入其他命令字段。

Step 12 - 输入 echo 在命令字段中,且无效测试 在目标字段中。

Step 13 - 输入结束 在命令字段中。

Step 14 - 输入关闭 在命令字段中,以关闭浏览器窗口。

selenium control flow 2

Step 15 - 单击顶部运行所有测试,并等待测试执行完成。在我们的示例中,我们将看到:运行:1,失败:0,以及一根绿条表示测试在无任何失败的情况下成功运行。另外,完成成功的消息出现在日志中。

selenium control flow 3

在上面的示例中,我们已经验证文本 - Welcome, Login In ,并在控制台中打印消息 - 验证正确。此外,我们获得了顶部的绿色勾形,表示该测试通过。

Example 2

让我们举一个例子,我们将在其中使用一个叫做 while 的循环控制流命令。

要遵循的步骤如下所示 -

Step 1 - 按照示例 1 中提到的执行步骤 1 到 4。

Step 2 - 输入执行脚本 在命令字段中,输入 1 在目标字段中,以及 val 在值字段中。

Step 3 - 输入 while 在命令字段中,以及 ${val} < 3 在目标字段中。

Step 4 - 输入 echo 在命令字段中,以及 ${val} 在目标字段中。

Step 5 - 输入执行脚本 在命令字段中,输入返回 ${val} + 1 在目标字段中,以及 val 在值字段中。

Step 6 - 输入结束 在命令字段中。

selenium control flow 4

Step 7 - 单击顶部运行所有测试,并等待测试执行完成。在我们的示例中,我们将看到:运行:1,失败:0,以及一根绿条表示测试在无任何失败的情况下成功运行。另外,完成成功的消息出现在日志中。

selenium control flow 5

Conclusion

这就总结了我们关于 Selenium IDE - 控制流教程的全面解读。我们已经开始描述了 JavaScript 表达式、条件分支上的基本控制流命令、循环上的基本控制流命令,以及示例以便引导如何使用这些命令以及 Selenium。

这使你掌握了 Selenium IDE 控制流程的深入知识。明智的做法是继续实践你学到的知识,并探索其他与 Selenium 相关的知识,以加深理解并拓展视野。