使用Web浏览器弹出窗口编码的UI测试

时间:2011-09-21 09:16:40

标签: .net asp.net visual-studio-2010 coded-ui-tests

我正在尝试使用Coded UI Test来控制Web应用程序(我没有使用soruce代码)来为我的应用程序生成输入数据(填写表单等)。

在某个时刻,Web应用程序会打开一个新窗口,并且在这个新的浏览器窗口中继续填写过程。问题是我似乎无法让UI测试代码“移动”或发现新窗口是打开的。它搜索旧窗口中的下一个项目,因此找不到它。

有没有办法将焦点移动到新打开的浏览器窗口?

使用VS 2010,IE9

2 个答案:

答案 0 :(得分:1)

这个回复可能有点晚,但我在以下方法上取得了一些成功:

受到使用CodedUI的Selenium的PluralSight课程的启发,我创建了一个名为Browser的类,它具有BrowserWindow对象的公共静态实例。在那个类中,我有一个Initialize()方法,它为我的静态BrowserWindow实例赋值BrowserWindow.Launch("yourUrlHere")。当我点击在新窗口中打开的链接时,我必须切换焦点"到新窗口,我只是将我的静态BrowserWindow对象重新分配给BrowserWindow.Locate("windowTitleGoesHere")的值。现在如果我必须在浏览器窗口作为我的搜索上下文搜索页面上的元素,我总是有正确的浏览器窗口。当该窗口关闭时,我只需使用BrowserWindow.Locate(" windowTitleGoesHere")方法将我的静态BrowserWindow对象重新分配回主窗口。

HTH

答案 1 :(得分:-1)

您可以为搜索的控件指定父级。 所以,你需要的只是:

1)跟踪打开的IE窗口(您可以通过标题,HWND等找到它们)

2)将这些窗口存储为几个BrowserWindow变量。

3)搜索所有控件:

HtmlHyperLink hl = new HtmlHyperLink(window2);
// rest of specification

4)你在你需要的窗口中获得控件

如果您使用录音机,您需要对测试进行一些更改(我们从头开始编写测试和UIMaps,因为录音机会生成低质量的代码)。