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

发布于 2024-12-05 16:46:33 字数 224 浏览 1 评论 0原文

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

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

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

使用VS 2010、IE9

I'm trying to use the Coded UI Test to control an web application (which I don't have soruce code for) to generate input data for my application (filling in a form etc).

At a certain point, the web app opens a new windows, and the process of filling in continues in this new browser windows. The trouble is that I cant seem to get the UI test code to "move" or discover that a new window is open. It searches for the next item in the old windows, and therefore does not find it.

Is there a way to "move focus" to the newly opened browser window?

Using VS 2010, IE9

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

天涯离梦残月幽梦 2024-12-12 16:46:33

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

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

华泰

This reply may be a little late but I've had some success with the following approach:

Inspired by a PluralSight course on Selenium with CodedUI, I created a class called Browser which features a public, static instance of the BrowserWindow object. In that class I have an Initialize() method which assigns my static BrowserWindow instance the value of BrowserWindow.Launch("yourUrlHere"). When I click on a link that opens in a new window and I have to "switch focus" to the new window, I just reassign my static BrowserWindow object the value of BrowserWindow.Locate("windowTitleGoesHere"). Now if I have to search for an element on the page with the browser window as my search context, I always have the correct browser window. When that window closes, I simply reassign my static BrowserWindow object back to the main window using the BrowserWindow.Locate("windowTitleGoesHere") method.

HTH

撩起发的微风 2024-12-12 16:46:33

您可以为您搜索的控件指定父级。
因此,您所需要做的就是:

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

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

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

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

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

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

You may specify parent for controls you search.
So, all you need:

1) keep track of open IE windows (you may find them by title, HWND etc.)

2) store these windows as a couple of BrowserWindow variables.

3) search for all the controls like that:

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

4) you get your controls in the window you need

You will need some changes to your tests if you use recorder (we write out tests and UIMaps from scratch because recorder generates low-quality code).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文