使用正则表达式在Selenium IDE中定义是/否逻辑

时间:2014-11-29 10:49:16

标签: javascript regex selenium selenium-ide

基本上我想要一个IDE行:

如果$ variable匹配XXXXX格式,则输入值'DoesVarMatch'=是

如果变量与regexp匹配,那么我就可以执行条件gotoIf语句。最终我想用日期(验证为dd / mm / yyyy)和电子邮件变量来做这件事,但我开始用一个简单的正则表达式来解决逻辑问题。

我尝试了以下(不起作用):

<tr>
    <td>gotoIf</td>
    <td>'Green' == /[Gg]reen/</td>
    <td>GreenTrue</td>
</tr>
<tr>
    <td>stop</td>
    <td></td>
    <td></td>
</tr>
<tr>
    <td>label</td>
    <td>GreenTrue</td>
    <td></td>
</tr>

我也试过使用javascript(也没用,我期望返回一个True值):

<tr>
    <td>runScript</td>
    <td>var re = /[Gg]reen/.test('Green'); return re.test('Green');</td>
    <td>Colour</td>
</tr>
<tr>
    <td>echo</td>
    <td>${Colour}</td>
    <td></td>
</tr>

以下执行正确,但我似乎无法使用它们来定义是/否逻辑:

<tr>
    <td>verifyEval</td>
    <td>'Green'</td>
    <td>regexp:[Gg]reen</td>
</tr>
<tr>
    <td>storeEval</td>
    <td>'Green'</td>
    <td>regexp:[Gg]reen</td>
</tr>

我很欣赏使用Selenium使用regexp或javascript来定义我可以用来进行逻辑测试的变量的任何见解。

3 个答案:

答案 0 :(得分:0)

我找到了解决方案。如果有人有任何改善我在这里的建议,请随时评论。基本上不是创建值然后执行gotoIf语句我使用正则表达式验证本身来确定gotoIf语句。

<!--Basic Colour testing-->
<tr>
    <td>verifyEval</td>
    <td>'Green'</td>
    <td>regexp:[Gg]reen</td>
</tr>
<tr>
    <td>storeEval</td>
    <td>'Green'</td>
    <td>regexp:[Gg]reen</td>
</tr>
<tr>
    <td>store</td>
    <td>Blue</td>
    <td>Colour</td>
</tr>
<tr>
    <td>gotoIf</td>
    <td>javascript{ var re = /[Gg]reen/g; re.test(storedVars.Colour);}</td>
    <td>GreenTrue</td>
</tr>
<tr>
    <td>stop</td>
    <td></td>
    <td></td>
</tr>
<tr>
    <td>label</td>
    <td>GreenTrue</td>
    <td></td>
</tr>
<tr>
    <td>stop</td>
    <td></td>
    <td></td>
</tr>

答案 1 :(得分:0)

就像一个抬头。你使用verify / assertEval命令的方式是正确的,因为它正确地等同。但不是参数

verifyEval | logicaltest | outcome

因此,如果您的逻辑测试不是==,那么您需要更好的语法。例如

verifyEval | 'Green'!==/[Gg]reen/ | false/true

答案 2 :(得分:0)

Hello Selenium Developers

我找到了获得布尔结果的答案,以便在此问题中使用。首先,升级到Selenium 2.9.1或更高版本。这使您可以访问JavaScript函数&#34; test&#34;。然后,您可以编写以下代码,以便为您提供可以在&#34; gotoif&#34;中使用的布尔结果。这是我最近使用过的一个例子。

  1. 提示用户输入1-11的数字。
  2. 将提示变量放入数字对象中。 (不确定是否有必要?)
  3. 将正则表达式定义为变量。
  4. 最后,使用JavaScript&#34; test&#34;函数产生一个布尔响应放在&#34;结果&#34;变量
  5. 这会给你一个&#34;结果&#34;字段来确定你的&#34; gotoif&#34;。
  6. 这是代码。

    <tr>
        <td>showPrompt</td>
        <td>Please select a number between 1-11 only!!!</td>
        <td>userAnswer</td>
    <\tr>
    <tr>
        <td>storeEval</td>
        <td>new Number(storedVars['userAnswer'])<\td>
        <td>nbrAnswer</td>
    </tr>
    <tr>
        <td>storeEval</td>
        <td>javascript{var regExpTester = /^[1-9][0-1]?$/; regExpTester.test(storedVars.nbrAnswer);}</td>
        <td>results</td>
    <\tr>