【问题标题】: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 时才执行重置代码。

      【讨论】:

        猜你喜欢
        • 2020-11-02
        • 1970-01-01
        • 2022-12-07
        • 1970-01-01
        • 1970-01-01
        • 2020-08-31
        • 1970-01-01
        • 2018-06-16
        • 1970-01-01
        相关资源
        最近更新 更多