使用WATIN检测新的浏览器窗口

时间:2011-01-20 16:58:25

标签: watin

有没有办法在新的浏览器窗口(或浏览器标签)中测试链接是否已打开?

更新

到目前为止,我使用了以下代码:

var newBrowserWindow = Browser.AttachTo<IE>(Find.ByTitle(browserTitle));
Assert.That(newBrowserWindow.hWnd, Is.Not.EqualTo(existingBrowserWindow.hWnd));

我使用existingBrowserWindow打开页面并单击链接。但是当链接在现有浏览器中打开一个新选项卡(IE的默认行为为targer = _blank)时,它具有相同的窗口句柄,因为它是相同的浏览器窗口。那么如何检测新标签?

1 个答案:

答案 0 :(得分:4)

你的一些代码可以帮助......,

无论如何,当链接打开一个新的浏览器窗口时我所做的是

using (var newBrowser = WatiN.Core.Browser.AttachTo<IE>(Find.ByTitle("Analytics - Read conversation"))
{
}
根据文档,

Browser.AttachTo支持Find.ByUri()Find.ByTitle()Find.By("hwnd", windowHandle)。我只测试了Find.ByUri()Find.ByTitle()方法。

如果你想检测你的动作是否打开了一个新的窗口,你可以做到

public bool TryGetNewBrowser(out IE browser, string title)
{
    try
    {
        browser = WatiN.Core.Browser.AttachTo<IE>(Find.ByTitle(title));
        return true;
    }
    catch(WatiN.Core.Exceptions.BrowserNotFoundException)
    {
        browser = null;
        return false;
    }
}

据我所知,WatiN没有支持新标签。但Internet Explorer的默认行为是在新窗口中打开新链接。