我有这个名称结构的弹出窗口:
static_dynamic_static
每次登录时动态部分都会更改,因此我的测试用例每次都会失败。我想用这样的正则表达式解决问题:
命令: waitForPopUp
目标: regexp:static _。+ _ static
但这不起作用。我做错了什么?这甚至有效吗?如果没有,还有另一种方法可以解决这个问题吗?
答案 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("^prefix.+", "g"); var mywin; windows=selenium.getAllWindowNames();for (i = 0; i < windows.length; i++) { if(myRe.test(windows[i])) { mywin=windows[i]} }; mywin;</td>
<td>x</td>
</tr>
<tr>
<td>selectWindow</td>
<td>name=${myWindow}</td>
<td></td>
</tr>
javascript没有完全正常运行(没有空检查),但应该有助于您走上正确的轨道。