Selenium IDE附带的命令使您可以添加条件逻辑和循环到测试中。
这使您仅在满足应用程序中的某些条件时才执行命令(或一组命令),或根据预定义的标准重复执行命令。
通过使用JavaScript表达式检查应用程序中的条件。
您可以在测试过程中的任何时候使用execute script
或execute async script
命令运行一段JavaScript,并将结果存储在变量中。这些变量可以在控制流命令中使用。
您也可以直接在控制流命令中使用JavaScript表达式。
控制流命令通过指定打开和关闭命令来表示一组命令(或块)来工作。
以下是每个可用的控制流命令以及它们的伴随命令和/或关闭命令。
if
,else if
,else
,end
times
, end
do
, repeat if
while
, end
让我们逐一介绍示例。
条件分支使您可以更改测试中的行为。
if
这是条件块的打开命令。
同时提供了您要评估的JavaScript表达式。这可以包含从测试中的先前JavaScript表达式创建的变量。所有这些都target
输入到if
命令的输入字段中。
如果该表达式评估为true
则测试将执行它后面,直到下一个条件控制流命令命令(例如,else if
,else
,或end
)。
如果表达式的计算来false
将跳过随后的命令和跳转到下一个相关条件控制流命令(例如,else if
,else
,或end
)。
else if
该命令在if
命令块中使用。
就像if
在target
输入字段中使用JavaScript表达式来求值一样,执行它后面的命令分支,或者跳到下一个相关的控制流命令(例如else
或end
)。
else
else
是您在一个if
区块中可以拥有的最终条件。如果不满足任何先决条件,则将执行此命令分支。
完成后,将跳转到end
命令。
end
该命令终止条件命令块。没有它,命令块将不完整,您将收到一条有用的错误消息,让您知道何时尝试运行测试。
循环使您可以遍历给定的命令集。
times
有了times
你可以指定一个迭代次数要执行的命令集。该数字进入命令的target
输入字段times
。
要关闭times
命令块,请确保使用end
命令。
do
您从do
命令开始此循环,然后是要执行的命令,然后以命令结束repeat if
。repeat if
接受您要在target
输入字段中求值的JavaScript表达式。
do
将先执行之后的命令,然后再对中的表达式repeat if
求值。如果表达式返回,true
则测试将跳回到do
命令并重复该序列。
这将一直持续到条件返回false
或触发无限循环保护-默认为1000
尝试。您可以通过value
在repeat if
命令的输入字段中指定一个数字来覆盖此默认值。
while
通过while
提供JavaScript表达式,您希望在target
输入字段中求值。如果它求值到true
命令块,则将继续执行直到到达end
命令。
完成后,测试将跳回到while
命令并重复相同的顺序(首先检查条件是否变为true
或false
)。
要关闭while
命令块,请使用end
命令。
循环将重试,直到条件返回false
或无限循环保护被触发为止(默认为1000
尝试)。您可以通过value
在while
命令的输入字段中指定一个数字来覆盖此默认值。
forEach
尽力做到最好,我们有能力遍历一个集合(例如,一个JS数组),并在我们执行该过程时引用该集合中的每个项目。
在该target
字段中,指定包含要迭代的数组的变量的名称。在该value
字段中,指定要使用的迭代器变量的名称。对于数组中的每个条目,将执行以下命令。在每次迭代期间,将通过迭代器变量访问当前条目的内容。
您可以根据需要嵌套控制流命令(例如,一个if
块可以放在一个while
块内部,反之亦然)。
如果不确定控制流语法是否正确,请尝试运行测试以查看。IDE将发现控制流语法中的错误,并调出不正确或丢失的特定命令。