如何在Selenium IDE中的waitForPopUp命令中执行regexp?

时间:2016-09-08 09:29:07

标签: selenium-ide

我有这个名称结构的弹出窗口:

static_dynamic_static

每次登录时动态部分都会更改,因此我的测试用例每次都会失败。我想用这样的正则表达式解决问题:

命令: waitForPopUp

目标: regexp:static _。+ _ static

但这不起作用。我做错了什么?这甚至有效吗?如果没有,还有另一种方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

根据我的经验,您不需要将其声明为目标字段中的正则表达式,您应该只能将目标设为:

static_*_static

那应该这样做

答案 1 :(得分:0)

如果你只有一个弹出窗口,你可以使用null作为目标,测试将采用第一个弹出窗口:

waitForPopup | null

另一种选择是在弹出窗口打开前获得动态部分。很可能从页面中检索动态部分。如果是这样,您可以使用storeEval获取它,而不是使用:

waitForPopup | javascript{'static'+storedVars['dynamic']+'static'}

如果您无法存储动态部分,请提供您网页的html或仅提供动态部分的部分。

我从理论上看,可以获取窗口的所有名称,而不是在循环中使用模式来获取窗口。

另外(理论上)可以扩展默认的waitForPopup函数。

但第二种方式,特别是第一种方式要便宜得多。

答案 2 :(得分:0)

处理此问题的最佳方法可能是运行一段javascript来处理此问题:

<tr>
    <td>storeEval</td>
    <td>var myRe = new RegExp(&quot;^prefix.+&quot;, &quot;g&quot;); var mywin; windows=selenium.getAllWindowNames();for (i = 0; i &lt; windows.length; i++) { if(myRe.test(windows[i])) { mywin=windows[i]}&nbsp;&nbsp;};&nbsp;&nbsp;mywin;</td>
    <td>x</td>
</tr>
<tr>
    <td>selectWindow</td>
    <td>name=${myWindow}</td>
    <td></td>
</tr>

javascript没有完全正常运行(没有空检查),但应该有助于您走上正确的轨道。