我想使用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}
似乎围绕==运算符存在问题......
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将根据结果标记评估,测试将继续正常进行。
如果你只需要比较两个变量,那么使用命令verifyExpression
巨大的价值|,ID = ID1 | VAR1
巨大的价值| ID = ID2 | VAR2
verifyExpression | $ {VAR1} | $ {VAR1}
如果两个变量匹配,那么如果没有错误将抛出则不会抛出错误。
谢谢
请注意变量和文本周围的单引号。这花了我一段时间。但是不确定是否需要使用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执行其函数的调用。我从我自己的试验中推断这一点,并试图解决我的问题。对于整数,以下代码适用于我。与==它evaulated为真,并转到正确的标签。
<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("This should not appear")</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("This should not appear")</td>
<td></td>
</tr>
<tr>
<td>label</td>
<td>target2</td>
<td></td>
</tr>