0

Selenium IDE 1.10.0 gotoIfを使用したいのですが、2 つの変数が等しいかどうかを比較する if ステートメントの書き方がわかりません。

編集: gotoIf を含む追加のコマンドを提供するフロー制御プラグイン 1.0.4 を使用しています。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}

== 演算子の周りに問題があるようです...

4

3 に答える 3

0

2つの変数を比較する必要がある場合は、コマンドverifyExpressionを使用します

storeValue | id = id1 | var1

storeValue | id = id2 | var2

verifyExpression | $ {var1} | $ {var1}

2つの変数が一致する場合、エラーがスローされない場合はエラーはスローされません。

ありがとうございました

于 2013-02-12T16:47:09.647 に答える
0

Selenium IDEは、値に基づいて動作する方法を提供していません(そうでない場合)。WebDriverを実行し、プログラミング言語を使用してその機能を提供する必要があります。assertただし、IDEでは、バリエーションのいずれかを使用して、値が等しくない場合にテストを停止できます。ただし、アサートによってテストが確実に中止されるわけではないことがわかりました。

2つの保存された値を比較する1つの方法:

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

値が同じである場合、はassertEvaltrueを返し、テストは続行されます。そうでない場合、falseを返し、テストは中止されます。

値が同じかどうかを知りたい場合は、使用できますverifyEval。IDEは結果に応じて評価にフラグを立て、テストは通常​​どおり続行されます。

于 2013-02-07T23:57:53.947 に答える
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 への呼び出しを実際にトリガーしてその関数を実行しているように思えます。これは、私の問題を解決しようとする私自身の試行錯誤から推測しています。整数の場合、次のコードが機能しました。== を使用すると、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>
于 2013-02-09T06:26:57.480 に答える