我在选择使用Selenium IDE弹出的窗口时遇到了困难。我试过了
selectWindow(title)
和
selectPopup(title)
但它们似乎不起作用。选择窗口后,
verifyTitle(title)
工作正常,所以我开始做一些测试,测试能够匹配背景窗口上的对象。所以我似乎无法按标题匹配窗口。我也试过使用没有参数的selectWindow / selectPopup,但是没有变化。
重要的是要注意窗口是通过单击按钮启动的,该按钮还根据其ID不能为Selenium创建窗口名称,因此我们需要基于标题启动,而不是name,我无法使用openWindow或类似的,因为url等是由底层系统生成的。我只需要一致的方法来选择弹出窗口。
有谁知道如何解决这个问题?
答案 0 :(得分:1)
您面临的问题是selenium IDE中存在一个错误,它只能识别IT打开的窗口。您无法使用“selectWindow”选择新窗口,因为Selenium IDE没有“打开”窗口。它在链接上“点击”,网页“打开”了窗口。
解决方法是在指向@href的超链接元素上使用storeAttribute从链接中提取url并将其存储为变量。然后使用openWindow。所以而不是:
<tr>
<td>click</td>
<td>//table[@id='dtgList']/tbody/tr[1]/td/a/u</td>
<td></td>
</tr>
<tr>
<td>pause</td>
<td>10000</td>
<td></td>
</tr>
<tr>
<td>selectWindow</td>
<td>Profile</td>
<td></td>
</tr>
使用这种策略:
<tr>
<td>storeAttribute</td>
<td>//table[@id='dtgList']/tbody/tr[1]/td/a@href</td>
<td>Profile</td>
</tr>
<tr>
<td>echo</td>
<td>${Profile}</td>
<td></td>
</tr>
<tr>
<td>openWindow</td>
<td>${Profile}</td>
<td></td>
</tr>
<tr>
<td>pause</td>
<td>10000</td>
<td></td>
</tr>
<tr>
<td>selectWindow</td>
<td>Profile</td>
<td></td>
</tr>
希望有所帮助。
答案 1 :(得分:0)
这可能适合你
click link=activate
waitForPageToLoad
selectWindow Third party activation site
或试试这个
[info] Executing: |storeEval | this.browserbot.findElement('link=Pastanet').href | Link_PastaNet |
[info] Executing: |openWindow | ${Link_PastaNet} | MyWindows |
答案 2 :(得分:0)
有时给出明确的窗口定位器类型有帮助。通过在标题前面加上title = selectWindow或selectPopup命令来指定您给出一个窗口标题。如下所示。
selectWindow title=my window title
答案 3 :(得分:0)
没有解决方案,但我有类似的问题 在我看来,背景窗口存在问题。如果您要选择的窗口位于另一个窗口后面,则无法选择它 - 仅当窗口已在前面时才有效
答案 4 :(得分:0)
user2989297和Samit Badle是正确的,但我发现他们的答案非常模糊和令人困惑,直到我跑过另一篇文章,帮助我把它们放在一起。
诀窍是在openWindow调用期间将您自己的名称分配给要选择的窗口。这是存储变量的目的,尽管在上面的例子中并不清楚。我建议可以更容易理解以下内容。
from addressbook_pb2 import Person
如果您在Selenium IDE中工作,则等效命令为;
<tr>
<td>storeAttribute</td>
<td>//table[@id='dtgList']/tbody/tr[1]/td/a@href</td>
<td>varNewWindowName</td>
</tr>
<tr>
<td>echo</td>
<td>${varNewWindowName}</td>
<td></td>
</tr>
<tr>
<td>openWindow</td>
<td>${varNewWindowName}</td>
<td>Profile</td> - this is where we assign it a new name, 'Profile'
</tr>
<tr>
<td>pause</td>
<td>10000</td>
<td></td>
</tr>
<tr>
<td>selectWindow</td>
<td>Profile</td> - now we can select it, using the new name
<td></td>
</tr>
答案 5 :(得分:0)
我可以看到这个问题在Selenium IDE中很流行...现在,我有一个简单的方法来解决这个问题。为什么不创建新的测试用例?它会根据需要选择New Window或Popup
答案 6 :(得分:-1)
最好的解决方案是将目标放空。把标题作为一个值。
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/index.html</url-pattern>
</filter-mapping>