0

我很难选择使用 Selenium IDE 弹出的窗口。我试过了

selectWindow(title)

selectPopup(title)

但它们似乎不起作用。选择窗口后,

verifyTitle(title)

工作得很好,所以我开始做一些测试,测试能够匹配背景窗口上的对象。所以看来我没有按标题匹配窗口。我也尝试过只使用不带参数的 selectWindow / selectPopup,但没有任何变化。

需要注意的是,窗口是通过单击按钮启动的,它还会根据 Selenium 不可用的 id 创建窗口的名称,因此我们需要根据标题而不是名称来启动,并且我无法使用 openWindow 或类似的,因为 url 等是由底层系统生成的。我只需要一种一致的方式来选择弹出窗口。

有谁知道我该如何解决这个问题?

4

7 回答 7

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>

希望有帮助。

于 2015-07-15T15:01:47.187 回答
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 | 
于 2013-06-20T08:57:50.677 回答
0

no solution, but I have a similar issue it seems to me, that there is a problem with background windows. if the window you want to select is behind another window, you cannot select it - it only works if the window is already in front

于 2014-09-22T16:13:16.797 回答
0

有时给出明确的窗口定位器类型会有所帮助。如下所示,通过在您的标题前面加上 title= 到 selectWindow 或 selectPopup 命令来指定您正在给窗口标题。

selectWindow  title=my window title
于 2013-07-30T22:59:21.970 回答
0

user2989297 和 Samit Badle 是正确的,但我发现他们的答案非常模糊和令人困惑,直到我遇到另一个帮助我将它们放在一起的帖子。

诀窍是在 openWindow 调用期间将您自己的名称分配给您要选择的窗口。这就是存储变量的目的,尽管在上面的示例中并不清楚。我建议以下内容可能更容易理解。

<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>

如果您在 Selenium IDE 中工作,等效的命令是:

    Command: storeAttribute
    Target: //table[@id='dtgList']/tbody/tr[1]/td/a@href
    Value: varNewWindow

    Command: echo - I've read that the echo command is optional, but I used it
    Target: ${varNewWindow}
    Value: 

    Command: openWindow
    Target: ${varNewWindow}
    Value: Profile - again, this is where we assign the new name

    Command: Pause
    Target: 10000
    Value:

    Command: selectWindow
    Target: Profile - and then use the new name
    Value: 
于 2016-07-27T23:31:49.847 回答
0

我可以看到这个问题在 Selenium IDE 中很流行......现在,我有一个简单的方法来解决这个问题。为什么不创建一个新的测试用例?它将根据需要选择新窗口或弹出窗口

于 2017-03-29T04:35:43.633 回答
-1

最好的解决方案是将目标留空并将标题作为值。

Command: selectPopUp
Target: 
Value: Your popUp title
于 2017-01-27T09:59:40.327 回答