我试图使用编码的用户界面测试来控制一个Web应用程序(我没有soruce代码)为我的应用程序生成输入数据(填写表格等) 。编码UI测试与网页浏览器弹出
在某个时间点,网络应用程序会打开一个新窗口,然后在这个新的浏览器窗口中继续填充过程。麻烦的是,我似乎无法让UI测试代码“移动”或发现新窗口已打开。它搜索旧窗口中的下一个项目,因此找不到它。
有没有办法将焦点移动到新打开的浏览器窗口?
使用VS 2010,IE9
我试图使用编码的用户界面测试来控制一个Web应用程序(我没有soruce代码)为我的应用程序生成输入数据(填写表格等) 。编码UI测试与网页浏览器弹出
在某个时间点,网络应用程序会打开一个新窗口,然后在这个新的浏览器窗口中继续填充过程。麻烦的是,我似乎无法让UI测试代码“移动”或发现新窗口已打开。它搜索旧窗口中的下一个项目,因此找不到它。
有没有办法将焦点移动到新打开的浏览器窗口?
使用VS 2010,IE9
您可以为您搜索的控件指定父级。 所以,你需要:
1)保持打开的IE窗口的轨道(您可以通过标题找到他们,HWND等)
2)这些窗口存储为一对夫妇BrowserWindow
变量。
3)搜索所有这样的控件:
HtmlHyperLink hl = new HtmlHyperLink(window2);
// rest of specification
4)你会得到你的控件的窗口,你需要
如果你用录音机您将需要一些改变你的测试(我们因为记录器产生低质量的代码,所以从头开始写出测试和UIMaps)。
这个答复可能是晚了一点,但我已经取得了一些成功如下方法:
通过与CodedUI硒PluralSight课程的启发,我创建了一个类中调用浏览器设有一个公共的,静态实例的BrowserWindow
对象。在那个类中,我有一个Initialize()方法,它将静态BrowserWindow实例赋值为BrowserWindow.Launch("yourUrlHere")
。当我点击一个在新窗口中打开的链接,并且必须将焦点切换到新窗口时,我只需重新分配我的静态BrowserWindow对象的值为BrowserWindow.Locate("windowTitleGoesHere")
。现在,如果我必须使用浏览器窗口作为搜索上下文搜索页面上的元素,我总是会有正确的浏览器窗口。当窗口关闭时,我只需使用BrowserWindow.Locate(“windowTitleGoesHere”)方法将我的静态BrowserWindow对象重新分配回主窗口。
HTH
小心解释downvote? –