2011-09-21 47 views
2

我试图使用编码的用户界面测试来控制一个Web应用程序(我没有soruce代码)为我的应用程序生成输入数据(填写表格等) 。编码UI测试与网页浏览器弹出

在某个时间点,网络应用程序会打开一个新窗口,然后在这个新的浏览器窗口中继续填充过程。麻烦的是,我似乎无法让UI测试代码“移动”或发现新窗口已打开。它搜索旧窗口中的下一个项目,因此找不到它。

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

使用VS 2010,IE9

回答

-1

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

1)保持打开的IE窗口的轨道(您可以通过标题找到他们,HWND等)

2)这些窗口存储为一对夫妇BrowserWindow变量。

3)搜索所有这样的控件:

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

4)你会得到你的控件的窗口,你需要

如果你用录音机您将需要一些改变你的测试(我们因为记录器产生低质量的代码,所以从头开始写出测试和UIMaps)。

+0

小心解释downvote? –

1

这个答复可能是晚了一点,但我已经取得了一些成功如下方法:

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

HTH