0

Я использую Watin 2.1, чтобы попытаться проверить загрузку файлов и открыть файлы для веб-сайта. Это хорошо работало в Internet Explorer 8, но с Internet Explorer 9 в нижней части окна есть желто-белая панель загрузки вместо всплывающего диалогового окна.Получить определенную вкладку в MSIE 9

Я нашел этот ответ: https://stackoverflow.com/a/8532222/246622, который решает эту проблему, если вкладка браузера, которая меня интересует, находится сверху. Если есть другие вкладки, которые находятся сверху, он не может найти панель загрузки. Проблема заключается в том, что эти тесты откроют другие вкладки в верхней части вкладки с панелью загрузки до начала загрузки.

Итак, как мне получить доступ к правильной вкладке или как переключить верхнюю/видимую вкладку в Internet Explorer или как я могу открыть эти другие страницы в других окнах, а не в вкладках в том же окне , или как закрыть те другие вкладки из моего тестового приложения?

Вот соответствующий фрагмент кода:

Window windowMain = new Window(WatiN.Core.Native.Windows.NativeMethods.GetWindow(browser.hWnd, 5/*GW_CHILD*/)); // This gets the topmost browser tab. 
System.Windows.Automation.TreeWalker trw = new System.Windows.Automation.TreeWalker(System.Windows.Automation.Condition.TrueCondition); 
mainWindow = trw.GetParent(System.Windows.Automation.AutomationElement.FromHandle(browser.hWnd)); 
windowDialog = new Window(WatiN.Core.Native.Windows.NativeMethods.GetWindow(windowMain.Hwnd, 5)); 

Я попытался это:

var lowerWindow = new Window(WatiN.Core.Native.Windows.NativeMethods.GetWindow(aBrowserTab.Hwnd, 2/*GW_HWNDNEXT*/)); // This gets a next lower window. 

Я тогда планировал идентифицирующий вкладку правильно, используя регулярное выражение с названием:

titleRegex.IsMatch(windowMain.ToplevelWindow.Title) 

, но вместо этого нижнее окно появляется в нижнем окне в том же окне.

ответ

1

У меня была аналогичная проблема, и после исследований, похожих на то, что вы пытаетесь, я решил попробовать альтернативные маршруты. Также обратите внимание, что даже если вы правильно это сделаете, у вас будет много работы для переноса ваших тестов на другие браузеры, и IE 10 быстро выйдет.

  1. Действительно ли вам необходимо загрузить файл из браузера? Как насчет - прочитайте URL-адрес, который запускает загрузку, а затем выполните WebRequest на этом URL-адресе, чтобы получить файл?

  2. Посмотрите на использование Coded UI - не записанные тесты, а сгенерированные. Они могут автоматизировать нажатие на оконные приложения, а также в браузере. Также обратите внимание, что разработка, похоже, остановилась на waitn, поэтому имеет смысл перейти к чему-то более надежному.

Смежные вопросы