【问题标题】:How to click ok button in alert dialog box using watin?如何使用 watin 在警报对话框中单击确定按钮?
【发布时间】:2025-12-10 23:50:02
【问题描述】:

我正在尝试自动化一个网站,在我的项目中单击“提交”按钮后,会出现一条带有确定按钮的警报消息。我想点击确定按钮。

我分别尝试了这两个代码,但这些代码不起作用

                    AlertDialogHandler AlertDialog = new AlertDialogHandler();
                    ie.AddDialogHandler(AlertDialog);
                    ie.Button(Find.ByValue("Submit")).ClickNoWait();
                    AlertDialog.WaitUntilExists();
                    AlertDialog.OKButton.Click();
                    ie.WaitForComplete();
                    ie.RemoveDialogHandler(AlertDialog);


                    var AlertDialogHandler = new AlertDialogHandler();
                    using (new UseDialogOnce(ie.DialogWatcher, AlertDialogHandler))
                    {
                        ie.Button(Find.ByValue("Submit")).ClickNoWait();
                        AlertDialogHandler.WaitUntilExists(50);
                        var message = AlertDialogHandler.Message;
                        AlertDialogHandler.OKButton.Click();
                        ie.WaitForComplete();
                    }

在使用这两个代码时,我得到了相同的异常“对话框在 30 秒内不可用”。

任何帮助将不胜感激。谢谢你:)

【问题讨论】:

    标签: c# watin


    【解决方案1】:


    当我打开多个浏览器窗口并且我正在尝试时,这种情况发生过几次。
    当时的解决方案是关闭所有 IE 实例,关闭 NUnit / VS 并重新开始,它就像一个魅力。但是,我使用的是 ConfirmDialogHandler 而不是 AlertDialog 处理程序。

    如果这没有帮助,您可能想在启动浏览器实例之前尝试添加以下内容。

    Settings.AutoStartDialogWatcher = true;
    Settings.AutoCloseDialogs = true;
    

    【讨论】:

      【解决方案2】:

      我不熟悉 WatiN,但这里有另一个 SO 帖子可能会有所帮助:

      WatiN seems to not find JavaScript alert

      【讨论】:

        【解决方案3】:

        有一种方法可以在没有 watin 的情况下执行此操作:

        看我的帖子:

        Need a way to perform auto confirm for firefox or any other browser popup's

        【讨论】:

          【解决方案4】:

          这有点不相关,但 AlertDialogHandler 不适用于 Firefox,但有一种解决方法...

          http://pastebin.com/ZapXr9Yf

          【讨论】: