Selenium IDE gotoIf javascript语法

问题描述 投票:0回答:3

我想使用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}

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

javascript selenium-ide
3个回答
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将根据结果标记评估,测试将继续正常进行。


0
投票

如果你只需要比较两个变量,那么使用命令verifyExpression

巨大的价值|,ID = ID1 | VAR1

巨大的价值| ID = ID2 | VAR2

verifyExpression | $ {VAR1} | $ {VAR1}

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

谢谢


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执行其函数的调用。我从我自己的试验中推断这一点,并试图解决我的问题。对于整数,以下代码适用于我。与==它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(&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>
© www.soinside.com 2019 - 2024. All rights reserved.