如何关注Selenium IDE中新打开的窗口?
我点击了一个链接,系统会打开一个新标签页。但是我无法将焦点转移到新窗口。
我尝试了this other SO answer,但它仍无效。
以下是我尝试过的代码:
<tr>
<td>storeEval</td>
<td>selenium.getAllWindowTitles()[0]</td>
<td>windowName</td>
</tr>
<tr>
<td>getEval</td>
<td>this.doEcho("array length: "+selenium.getAllWindowNames().length);this.doEcho("Available window names: "+selenium.getAllWindowNames());this.doEcho("Selecting window: "+storedVars['windowName']);this.doEcho("Available window Titles: "+selenium.getAllWindowTitles());</td>
<td></td>
</tr>
<tr>
<td>echo</td>
<td>${windowName}</td>
<td></td>
</tr>
<tr>
<td>selectWindow</td>
<td>title=${windowName}</td>
<td></td>
</tr>
此代码使用当前选项卡而不是新选项卡,并且在回显中它正在打印当前选项卡的标题,因此再次聚焦于当前选项卡。当我在第一行的数组参数(1
)中使用0
而不是selenium.getAllWindowTitles()[1]
时,它正在打印null
。
我也尝试使用名称而不是标题,但它仍然不起作用。
答案 0 :(得分:1)
您是否尝试在waitForPopUp
之前添加命令selectWindow
?
当我尝试使selectWindow
命令工作时,这就是我的测试用例的代码:
<tr>
<td>click</td>
<td>link=Named window by hyperlink</td>
<td></td>
</tr>
<tr>
<td>waitForPopUp</td>
<td></td>
<td>30000</td>
</tr>
<tr>
<td>selectWindow</td>
<td>name=namedWindowByHyperlink1</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Named window by hyperlink</td>
<td></td>
</tr>
<tr>
<td>waitForPopUp</td>
<td></td>
<td>30000</td>
</tr>
<tr>
<td>selectWindow</td>
<td>name=namedWindowByHyperlink2</td>
<td></td>
</tr>
<tr>
<td>verifyText</td>
<td>css=p</td>
<td>Test was completed.</td>
</tr>
当我使用此代码时,我可以在尝试将焦点转移到新窗口时传递测试用例。
希望它可以帮助你。
如果需要,请尝试使用工具SideeX,即Selenium IDE的扩展版本。 SideeX现在被用作'The Next Generation' of Selenium IDE的基础。
我对此工具中的窗口和框架问题有一些新想法,以使测试用例有效。
答案 1 :(得分:0)
我有一个类似的问题,在测试环境中,所有的窗口基本上都分配了相同的名称。每当我测试打开新标签的功能时,我只使用
selectWindow new
当我完成测试该页面时,
closeWindow关闭该新标签,然后
selectWindow使用NULL或无参数返回主窗口。