获取MSIE 9中的特定选项卡

时间:2012-11-15 14:04:58

标签: c# internet-explorer-9 watin ui-automation microsoft-ui-automation

我正在使用Watin 2.1来测试网站的文件下载和文件打开功能。 这在Internet Explorer 8中运行良好,但是从Internet Explorer 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 个答案:

答案 0 :(得分:1)

我有一个类似的问题,经过类似于你正在尝试的调查后,我决定尝试替代路线。另请注意,即使您确实这样做了,您也需要做很多工作才能在其他浏览器上移植测试,而且IE 10会很快出现。

  1. 您真的需要从浏览器下载文件吗?怎么样 - 阅读触发下载的网址,然后在该网址上WebRequest检索您的文件?

  2. 看看使用Coded UI - 不是录制的测试,而是生成的测试。他们能够自动点击窗口应用程序以及浏览器内部。还要注意,开发似乎已停止在waitn上,因此可能有必要转向更可靠的东西。