Selenium IDE gotoIf javascript语法

时间:2013-02-07 18:37:24

标签: javascript selenium-ide

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

编辑:我正在使用流控制插件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}

似乎围绕==运算符存在问题......

3 个答案:

答案 0 :(得分:0)

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会根据结果标记评估,测试将继续正常进行。

答案 1 :(得分:0)

请注意变量和文本周围的单引号。这花了我一段时间。 但是不确定是否需要使用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执行其函数的调用。我从我自己的试验中推断这一点,并试图解决我的问题。 对于整数,以下代码适用于我。与==它的真实性,并转到正确的标签。

   <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>

答案 2 :(得分:0)

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

storeValue |,ID = ID1 | VAR1

storeValue | ID = ID2 | VAR2

verifyExpression | $ {VAR1} | $ {VAR1}

如果两个变量匹配,那么如果没有错误将抛出则不会抛出错误。

谢谢