【问题标题】:Selenium IDE gotoIf javascript syntaxSelenium IDE gotoIf javascript 语法
【发布时间】:2013-01-23 09:18:17
【问题描述】:

我想使用 selenium IDE 1.10.0 gotoIf,但我不知道如何编写比较 2 个变量是否相等的 if 语句。

编辑:我正在使用流控制插件 1.0.4,它提供了包括 gotoIf 在内的额外命令。从http://seleniumhq.org/download/上的IDE插件下载

    <tr>
    <td>store</td>
    <td>123</td>
    <td>x</td>
</tr>
<tr>
    <td>store</td>
    <td>123</td>
    <td>y</td>
</tr>
<tr>
    <td>echo</td>
    <td>javascript{storedVars.x}</td>
    <td></td>
</tr>
<tr>
    <td>gotoIf</td>
    <td>javascript{storedVars.x == storedVars.y}</td>
    <td>Yes</td>
</tr>
<tr>
    <td>label</td>
    <td></td>
    <td>No</td>
</tr>
<tr>
    <td>label</td>
    <td></td>
    <td>Yes</td>
</tr>

我尝试了以下表达方式:

javascript{storedVars.x == storedVars.y}
javascript{storedVars["x"] == storedVars["y"]}
javascript{(storedVars.x == storedVars.y);}
storedVars.x == storedVars.y
${storedVars.x == storedVars.y}
${x} == ${y}
"${x}" == "${y}"
'${x}' == '${y}'
"${x} == ${y}"

(and also)
javascript{(true == true);}
javascript{true == true}

都抛出同样的错误:

[error] Unexpected Exception: fileName -> chrome://flowcontrol/content/extensions/goto-sel-ide.js?1358766136404, lineNumber -> 120, columnNumber -> 0

有什么想法吗? 谢谢,皮特

EDIT2:我一直无法让流量控制 IDE 插件工作。在 Michael 的建议下,我尝试了 sideflow.js 用户扩展。

使用 sideflow.js,我尝试了以下表达式:

'${x}'=='${y}'
${x}==${y}
'${x}'=='123'

都抛出同样的错误:

[error] Unexpected Exception: fileName -> chrome://selenium-ide/content/tools.js -> file:///U:/Code/Selenium/sideflow.js?1360682689170, lineNumber -> 86, columnNumber -> 0

但以下表达式可以正常工作:

${x}!=${y}
${x}<${y}
${x}>${y}

== 运算符似乎有问题...

【问题讨论】:

    标签: javascript selenium-ide


    【解决方案1】:

    注意变量和文本周围的单引号。这也花了我一段时间。 但是不确定您是否需要使用 javascript 片段,它需要如何格式化。

    <tr>
        <td>storeValue</td>
    <td>id=id_one_off_byline</td>
    <td>oneoff</td>
    </tr>
    
    <tr>
        <td>gotoIf</td>
        <td>'${oneoff}' == 'Jeff'</td>
        <td>Jeff</td>
    </tr>
    

    我相信每次存储变量请求后都必须使用 runscript。我可能错了,但在我看来,这实际上是触发对 sideflow.js 的调用以执行其功能的原因。我从我自己试图解决我的问题的试验和错误中推断出这一点。 对于整数,以下代码对我有用。使用 == 它评估为 true,并转到正确的标签。

       <tr>
    <td>store</td>
        <td>458772</td>
        <td>x</td>
    </tr>
    <tr>
        <td>gotoLabel</td>
        <td>target1</td>
        <td></td>
    </tr>
    <tr>
        <td>runScript</td>
        <td>alert(&quot;This should not appear&quot;)</td>
        <td></td>
    </tr>
    <tr>
        <td>label</td>
        <td>target1</td>
        <td></td>
    </tr>
    <tr>
        <td>store</td>
        <td>458772</td>
    <td>y</td>
    </tr>
    <tr>
        <td>gotoIf</td>
        <td>${y} == ${x}</td>
    <td>target2</td>
    </tr>
    <tr>
        <td>runScript</td>
        <td>alert(&quot;This should not appear&quot;)</td>
        <td></td>
    </tr>
    <tr>
        <td>label</td>
        <td>target2</td>
        <td></td>
    </tr>
    

    【讨论】:

    • 如果您使用 selenium ide,但请原谅我的无知,但是您为什么使用 flowcontrol.js 而不是 sideflow.js?我相信 flowcontrol.js 是为 Selenium RC 或 Selenium Webdriver 设计的。请注意,我仍在自我学习。
    • 获取 sideflow.js 并重试,不要忘记在适当的位置添加运行脚本。 51elliot.blogspot.com/2011/07/selenium-ide-sideflow-update.html
    • "在适当的位置添加运行脚本"?这是什么?
    【解决方案2】:

    如果您只需要比较两个变量,请使用命令 verifyExpression

    storeValue|id=id1|var1

    storeValue|id=id2|var2

    验证表达式|${var1}|${var1}

    如果两个变量匹配,则如果不抛出错误,则不会抛出错误。

    谢谢

    【讨论】:

      【解决方案3】:

      Selenium IDE 不提供对值进行操作的方法(如果有),您需要运行 WebDriver 并使用编程语言来提供该功能。但是,在 IDE 中,如果值不相等,您可以使用任何 assert 变体来停止测试。但是,我发现断言不能可靠地中止测试。

      比较两个存储值的一种方法:

      <tr>
          <td>storeValue</td>
          <td>id=value1</td>
          <td>val1</td>
      </tr>
      <tr>
          <td>storeValue</td>
          <td>id=value2</td>
          <td>val2</td>
      </tr>
      <tr>
          <td>assertEval</td>
          <td>storedVars['val1']</td>
          <td>${val2}</td>
      </tr>
      <tr>
          <td>echo</td>
          <td>Yay</td>
          <td></td>
      </tr>
      

      如果值相同,assertEval 将返回 true 并继续测试,否则返回 false 并中止测试。

      如果您只想知道值是否相同,您可以使用verifyEval,IDE 将根据结果标记评估,测试将继续正常进行。

      【讨论】:

        猜你喜欢
        • 2014-11-20
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多