在Selenium IDE中将未定义的变量用于if条件

时间:2019-05-16 16:14:15

标签: javascript integration-testing selenium-ide

我想在“父”测试结束时运行“子”测试,如果没有设置标志skipReset,该测试将清除会话cookie。此外,我想运行一个“祖父母”测试,该测试调用“父母”测试并设置skipReset = true,这应使“子”测试跳过重置并因此保留会话数据(请参见打印屏幕)。

但是,如果“孩子”测试是从没有设置标志skipReset的父母那里运行的,则测试失败。

Failed Selenium child test

我想这样做,因此不必将“父级”测试复制粘贴到“重父级”测试中(会话重置行除外)。有没有办法做到这一点?

4 个答案:

答案 0 :(得分:1)

所以我找到了一种适用于预期用途的解决方法。

我在“祖父母”测试中设置了一个JavaScript sessionStorage变量,并在“子”测试中检查了该JavaScript sessionStorage变量是否不是未定义和正确的。

在设置sessionStorage变量之前,请确保打开一个页面,这样在每次页面更改后它都将保持不变。查看祖父母和子女测试的打印屏幕。

Grandparent test

父级测试仅包含以下代码:

open | /other-page
run  | Reset session // Child test

Child test

通过这种方式,“子”测试仅在链中没有测试定义JavaScript变量skipReset的情况下执行重置代码。

答案 1 :(得分:0)

您可以创建一个虚拟网页,其中包含用于交换此信息的虚拟文本字段。 “祖父母”脚本使用TYPE填写表格,孩子使用store value读取表格。然后你可以做一个

If | ${value_from_field} = "skipReset" ...

或者:在Selenium IDE++(一个不同的项目)中,您可以使用csvSavecsvRead命令来exchange this information

答案 2 :(得分:0)

if "${skipReset}" == "$" + "{skipReset}"

只需使用字符串比较,IDE中的unset变量就意味着没有任何替代,因此它在编写时只是保留了一点('$ {skipReset}')。

答案 3 :(得分:0)

我将此类变量设置为“ 1”,以了解“子”功能是否应运行。如果变量未定义或为'0',则'child'函数将无法运行。

store | 1 | flag    or    store | 0 | flag

if | ${flag} == 1|
code here...
end| |