华廷&安培; IE9 - 不能点击确定按钮 [英] Watin & IE9 - Cant click ok buttons

查看:212
本文介绍了华廷&安培; IE9 - 不能点击确定按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是华廷通过大量不同的网站浏览,我使用的是伟大的解决方案的此处自动点击所有的JavaScript和IE浏览器的箱子,弹出ok了。



现在的问题是,这种解决方案对IE6,IE8的伟大工程,但不再适用于IE9。



有没有人对如何获得任何人的建议IE9自动点击/关闭所有提示?



(我使用的是最新的华廷释放,下面的代码)

 公共类的东西{

公共的东西(){
IE浏览器=新的IE(关于:空白);
addHandlers(浏览器);
..做的东西跟浏览器

}

//只需点击确定一切
私人无效addHandlers(浏览器浏览器)
{
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.AlertAndConfirmDialogHandler());
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.AlertDialogHandler());
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.CertificateWarningHandler());
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.CloseIEDialogHandler(假));
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.ConfirmDialogHandler());
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.DialogHandlerHelper());
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.FileDownloadHandler(me.htm));
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.FileUploadDialogHandler(me.htm));
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.PrintDialogHandler(WatiN.Core.DialogHandlers.PrintDialogHandler.ButtonsEnum.Cancel));
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.PromptDialogHandler(假));
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.RefreshWarningDialogHandler(假));
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.ReturnDialogHandler());
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.SecurityAlertDialogHandler());
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.SimpleJavaDialogHandler());
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.SecurityAlertDialogHandler());
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.AlertDialogHandler());
browser.AddDialogHandler(新WatiN.Core.DialogHandlers.SimpleJavaDialogHandler());
browser.AddDialogHandler(新OKDialogHandler());
}

}


公共类OKDialogHandler:WatiN.Core.DialogHandlers.BaseDialogHandler
{
公众覆盖布尔HandleDialog (窗口的窗口)
{
VAR键= GetOKButton(窗口);
button.Click();
返回FALSE;
}

公众覆盖布尔CanHandleDialog(窗口窗口)
{
返回GetOKButton(窗口)!= NULL;
}

私人WinButton GetOKButton(窗口窗口)
{
变种windowButton =新WindowsEnumerator()GetChildWindows(window.Hwnd,W =方式> w.ClassName ==按钮&放大器;&安培;新WinButton(w.Hwnd).title伪==OK)FirstOrDefault()。
如果(windowButton == NULL)
返回NULL;
,否则
返回新WinButton(windowButton.Hwnd);
}
}


解决方案

华廷2.1最近被释放它解决了一些 IE9问题。您可以从 http://watin.org/ 或使用更新的NuGet下载:




PM>更新包华廷



I'm using Watin to navigate through a large number of different websites, and I'm using the great solution here to automatically click ok on all the javascript and ie boxes that popup.

The problem is, this solution works great for ie6-ie8, but no longer works for IE9.

Does anyone have anyone suggestions on how to get IE9 to auto click/close all prompts?

(I'm using the latest Watin release, and the code below)

public class something {

public something() {
IE browser = new IE("about:blank");
addHandlers(browser);
.. do stuff with browser

}

  //Just click ok to everything
        private void addHandlers(Browser browser)
        {
                    browser.AddDialogHandler(new WatiN.Core.DialogHandlers.AlertAndConfirmDialogHandler());
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.AlertDialogHandler());
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.CertificateWarningHandler());
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.CloseIEDialogHandler(false));
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.ConfirmDialogHandler());
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.DialogHandlerHelper());
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.FileDownloadHandler("me.htm"));
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.FileUploadDialogHandler("me.htm"));             
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.PrintDialogHandler(WatiN.Core.DialogHandlers.PrintDialogHandler.ButtonsEnum.Cancel));
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.PromptDialogHandler(false));
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.RefreshWarningDialogHandler(false));
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.ReturnDialogHandler());
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.SecurityAlertDialogHandler());
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.SimpleJavaDialogHandler());
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.SecurityAlertDialogHandler());
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.AlertDialogHandler());
                browser.AddDialogHandler(new WatiN.Core.DialogHandlers.SimpleJavaDialogHandler());
                browser.AddDialogHandler(new OKDialogHandler());
            }

}


    public class OKDialogHandler : WatiN.Core.DialogHandlers.BaseDialogHandler
    {
        public override bool HandleDialog(Window window)
        {
            var button = GetOKButton(window);
            button.Click();   
            return false;
        }

        public override bool CanHandleDialog(Window window)
        {
            return GetOKButton(window) != null;
        }

        private WinButton GetOKButton(Window window)
        {
            var windowButton = new WindowsEnumerator().GetChildWindows(window.Hwnd, w => w.ClassName == "Button" && new WinButton(w.Hwnd).Title == "OK").FirstOrDefault();
            if (windowButton == null)
                return null;
            else
                return new WinButton(windowButton.Hwnd);
        }
    }

解决方案

WatiN 2.1 has recently been released which addresses a number of IE9 issues. You can download it from http://watin.org/ or update using NuGet:

PM> update-package watin

这篇关于华廷&安培; IE9 - 不能点击确定按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆