обнаружить новое окно браузера с WATIN - PullRequest
1 голос
/ 20 января 2011

есть ли способ проверить, открыта ли ссылка в новом окне браузера (или вкладке браузера)?

Обновление:

До сих пор я использовал следующий код:

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

Где я использовал существующее окно браузера, чтобы открыть страницу и щелкнуть ссылку. Но когда ссылка открывает новую вкладку в существующем браузере (поведение по умолчанию для IE с targer = _blank), она имеет тот же дескриптор окна, поскольку это то же самое окно браузера. Итак, как я могу обнаружить новую вкладку?

1 Ответ

4 голосов
/ 21 января 2011

Какой-нибудь ваш код поможет ...,

В любом случае, когда я открываю ссылку в новом окне браузера, я делаю

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 по умолчанию - открывать новые ссылки в новом окне.

...