Internet explorer 8 Watin未识别确认对话框OK按钮

Internet explorer 8 Watin未识别确认对话框OK按钮,internet-explorer-8,automated-tests,watin,Internet Explorer 8,Automated Tests,Watin,我最近开始了一项新的测试工作,我的前任使用watin运行了一个自动化套件,我以前没有使用watin的经验,因此,如果我不能向您提供相关信息,我很抱歉 当我运行套件时(针对IE 8.0.7601.17514),如果出现确认对话框,下一步就是按ok键,它似乎会卡住 //Enter invalid data var confirmDialog = new ConfirmDialogHandler(); IE.DialogWatcher.Add(confi

我最近开始了一项新的测试工作,我的前任使用watin运行了一个自动化套件,我以前没有使用watin的经验,因此,如果我不能向您提供相关信息,我很抱歉 当我运行套件时(针对IE 8.0.7601.17514),如果出现确认对话框,下一步就是按ok键,它似乎会卡住

//Enter invalid data
            var confirmDialog = new ConfirmDialogHandler();
            IE.DialogWatcher.Add(confirmDialog);
            using (new UseDialogOnce(IE.DialogWatcher, confirmDialog))
            {
                //Click to reset data entry
                IE.Page<DataEntryPage>().ResetVoucherButton.ClickNoWait();
                confirmDialog.WaitUntilExists(40000);
                confirmDialog.OKButton.Click();
                WaitForPostBackToComplete.WaitForAsyncPostBackToComplete(IE);
            }
//输入无效数据
var confirmDialog=新的ConfirmDialogHandler();
IE.DialogWatcher.Add(confirmDialog);
使用(新的UseDialogOnce(即DialogWatcher、confirmDialog))
{
//单击以重置数据输入
IE.Page().ResetVoucherButton.ClickNoWait();
confirmDialog.WaitUntilExists(40000);
confirmDialog.ok按钮。单击();
WaitForPostBackToComplete.WaitForAsyncPostBackToComplete(IE);
}
它只是挂在那里,等待超时时间过去

我以为问题出在我的iestationstancehelper.cs文件上,但它似乎是正确的

using System.Threading;
using WatiN.Core;

namespace WatiN
{
    public class IEStaticInstanceHelper
    {
        private IE _ie;
        private int _ieThread;
        private string _ieHwnd;

        public IE IE
        {
            get
            {
                var currentThreadId = GetCurrentThreadId();
                if (currentThreadId != _ieThread)
                {
                    _ie = IE.AttachTo<IE>(Find.By("hwnd", _ieHwnd));
                    _ieThread = currentThreadId;
                }
                return _ie;
            }
            set
            {
                _ie = value;
                _ieHwnd = _ie.hWnd.ToString();
                _ieThread = GetCurrentThreadId();
            }
        }

        private int GetCurrentThreadId()
        {
            return Thread.CurrentThread.GetHashCode();
        }
    }
}
使用系统线程;
使用WatiN.Core;
名称空间WatiN
{
公共类IEStationStanceHelper
{
私家侦探(IE),;
私有内部线程;
专用字符串_ieHwnd;
公共事业
{
得到
{
var currentThreadId=GetCurrentThreadId();
如果(currentThreadId!=\u ieThread)
{
_ie=ie.AttachTo(查找方式(“hwnd”);
_ieThread=currentThreadId;
}
返回(ie),;
}
设置
{
_ie=价值;
_ieHwnd=_ie.hWnd.ToString();
_ieThread=GetCurrentThreadId();
}
}
私有int GetCurrentThreadId()
{
返回Thread.CurrentThread.GetHashCode();
}
}
}
我最近重建了我的计算机(我的系统管理员也重建了),在重建之前这不是一个问题,但我想不出有什么可能改变了

任何帮助都将不胜感激

编辑


实际上,我不需要更改代码,我只需要更新我的Watin版本,因为它无法处理早期IE 8对话框和较新对话框之间的任何差异。

我在IE 9中遇到了类似的问题

我用下面的方法模拟对话中的快捷键

 using (browser)
                    {
                        SendKeys.SendWait("+(%S)");
                    }
发送密钥=


这有帮助吗?

嗨,我实际上不需要更改代码,我只需要更新我的Watin版本,因为它无法处理早期IE 8对话框和较新对话框之间的任何差异。谢谢