【问题标题】:Use undefined variables in Selenium IDE for if condition在 Selenium IDE 中使用未定义的变量作为 if 条件
【发布时间】:2019-10-03 23:28:46
【问题描述】:
如果标志skipReset 尚未设置,我想在“父”测试结束时运行“子”测试以清除会话cookie。此外,我想运行一个调用“父”测试并设置 skipReset = true 的“祖父”测试,这应该使“子”测试跳过重置,从而保留会话数据(参见打印屏幕)。
但是,如果“子”测试是从未设置标志 skipReset 的父级运行的,则测试失败。
我想这样做,因此不必将“父”测试复制粘贴到“祖父”测试中,不包括会话重置行。有没有办法做到这一点?
【问题讨论】:
标签:
javascript
integration-testing
selenium-ide
【解决方案1】:
我在“1”中设置了这些变量,以了解“子”函数是否应该运行。如果变量未定义或为“0”,则“子”函数将不会运行。
store | 1 | flag or store | 0 | flag
if | ${flag} == 1|
code here...
end| |
【解决方案2】:
if "${skipReset}" == "$" + "{skipReset}"
只需使用字符串比较,IDE 中未设置的变量意味着没有任何替换,所以它只是保持原样('${skipReset}')。
【解决方案3】:
所以我找到了一种适用于预期用途的解决方法。
我在“祖父母”测试中设置了一个 JavaScript sessionStorage 变量,并在“子”测试中检查该 JavaScript sessionStorage 变量是否未定义且正确。
确保在设置 sessionStorage 变量之前打开一个页面,以便它在每次页面更改时都保持不变。查看祖父母和孩子测试的打印屏幕。
父测试只包含以下代码:
open | /other-page
run | Reset session // Child test
这样,“子”测试仅在链中没有测试定义 JavaScript 变量 skipReset 时才执行重置代码。