我们的目标是:在 .net winform 中嵌入 Watin 浏览器测试。
目前,我们使用 .net WebBrowser 控件将浏览器行为嵌入到 winform 中。 我们使用类似以下代码(感谢 prostynick)将 WatiN 附加到表单上的 WebBroswer 控件:
问题在于 - “winform浏览器”需要在测试/自动化期间处理弹出窗口。
问题:当Watin连接到winforms webBrowser控件时(而不是使用其自己生成的IE窗口),如何处理弹出窗口? a)Watin的DialogWatcher仍然可以使用吗?如果可以…怎么做? b)如果不能,则我们可以编写自己的DialogWatcher - 但我们需要一个hWnd或processID来添加它。在这种情况下,我们从哪里获取正确的hWnd或processId,因为Waitin没有自己的窗口或进程?
感谢您提前提供任何想法…欢迎采用达到相同目标的替代方法!
目前,我们使用 .net WebBrowser 控件将浏览器行为嵌入到 winform 中。 我们使用类似以下代码(感谢 prostynick)将 WatiN 附加到表单上的 WebBroswer 控件:
var thread = new Thread(() =>
{
Settings.AutoStartDialogWatcher = false;
var ie = new IE(webBrowser1.ActiveXInstance);
ie.GoTo("http://www.google.com");
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
问题在于 - “winform浏览器”需要在测试/自动化期间处理弹出窗口。
问题:当Watin连接到winforms webBrowser控件时(而不是使用其自己生成的IE窗口),如何处理弹出窗口? a)Watin的DialogWatcher仍然可以使用吗?如果可以…怎么做? b)如果不能,则我们可以编写自己的DialogWatcher - 但我们需要一个hWnd或processID来添加它。在这种情况下,我们从哪里获取正确的hWnd或processId,因为Waitin没有自己的窗口或进程?
感谢您提前提供任何想法…欢迎采用达到相同目标的替代方法!
ie
,并将此变量传递给线程,这意味着当线程退出时,GC会被通知处理ie
。您无法强制它被处理。 - Odys