C# 隐藏浏览器弹出窗口-Watin

C# 隐藏浏览器弹出窗口-Watin,c#,popup,watin,C#,Popup,Watin,我正在windows窗体应用程序中使用Watin库。为了隐藏浏览器,我使用以下说明: Settings.Instance.MakeNewIeInstanceVisible = false; 但是,它不会隐藏弹出窗口(当模拟单击打开弹出窗口的元素时)。 有办法隐藏它们吗?我检查后发现: 默认情况下,WatiN测试将创建Internet Explorer实例 对用户可见。您可以通过更改 以下设置请注意HTMLDialog和任何弹出窗口 即使将此设置设置为false(这是默认设置),也将显示 Int

我正在windows窗体应用程序中使用Watin库。为了隐藏浏览器,我使用以下说明:

Settings.Instance.MakeNewIeInstanceVisible = false;
但是,它不会隐藏弹出窗口(当模拟单击打开弹出窗口的元素时)。 有办法隐藏它们吗?

我检查后发现:

默认情况下,WatiN测试将创建Internet Explorer实例 对用户可见。您可以通过更改 以下设置请注意HTMLDialog和任何弹出窗口 即使将此设置设置为false(这是默认设置),也将显示 Internet Explorer的行为(当前无法抑制)

由于WatIN自2011年以来没有更新过,我想你不会期望任何新功能支持你想要的

我不知道这是否是一个解决办法,但如果那些弹出窗口对您来说并不重要,为什么不阻止所有弹出窗口呢


您可以通过运行一些javascript代码并创建
窗口来编程实现。打开
函数不执行任何操作

示例

private void buttonPopupdEnabled_Click(object sender, EventArgs e)
{

    WatiN.Core.Settings.Instance.MakeNewIeInstanceVisible = false;
    IE ie = new IE();

    ie.GoTo("http://zikro.gr/dbg/html/watin-disable-popups/");
    ie.Eval("window['open'] = function() { return false; }");
    ie.TextField(Find.ById("numA")).TypeText("15");
    ie.TextField(Find.ById("numB")).TypeText("21");
    ie.Button(Find.ById("sum")).Click();
    string result = ie.Span(Find.ById("result")).Text;
    ie.Close();

    labelResult.Text = String.Format("The result is {0}", result);
}
是我制作的一个测试页面,它有一个非常简单的表单,当用户单击Sum按钮时,它对
numA
+
numB
进行汇总,并在
元素中显示结果。在结果文本更新之后,它通过调用
窗口打开一个弹出窗口。open
。为了使此弹出窗口消失,我们需要消除
窗口。打开
功能:

window['open'] = function() { return false; }
要使用Watin实现这一点,我们必须使用
Eval
函数并按如下方式注入javascript代码:

browser.Eval("window['open'] = function() { return false; }");
然后,所有的弹出窗口都只用于页面加载,我们得到了想要的结果

样本C#代码

private void buttonPopupdEnabled_Click(object sender, EventArgs e)
{

    WatiN.Core.Settings.Instance.MakeNewIeInstanceVisible = false;
    IE ie = new IE();

    ie.GoTo("http://zikro.gr/dbg/html/watin-disable-popups/");
    ie.Eval("window['open'] = function() { return false; }");
    ie.TextField(Find.ById("numA")).TypeText("15");
    ie.TextField(Find.ById("numB")).TypeText("21");
    ie.Button(Find.ById("sum")).Click();
    string result = ie.Span(Find.ById("result")).Text;
    ie.Close();

    labelResult.Text = String.Format("The result is {0}", result);
}
在注入javascript之前运行的程序(弹出窗口显示)

javascript注入后运行的程序(弹出窗口消失)


它们确实很重要:/@快乐地说,你想要的东西不是它们提供的。我想也许你必须改变你的图书馆。什么样的弹出窗口?诸如警报和确认之类的消息框?或者用
窗口打开新窗口。打开
?事实上,新窗口是通过向加载了Watin的页面注入一些javascript来实现的。请看一下我的答案。
private void buttonPopupdEnabled_Click(object sender, EventArgs e)
{

    WatiN.Core.Settings.Instance.MakeNewIeInstanceVisible = false;
    IE ie = new IE();

    ie.GoTo("http://zikro.gr/dbg/html/watin-disable-popups/");
    ie.Eval("window['open'] = function() { return false; }");
    ie.TextField(Find.ById("numA")).TypeText("15");
    ie.TextField(Find.ById("numB")).TypeText("21");
    ie.Button(Find.ById("sum")).Click();
    string result = ie.Span(Find.ById("result")).Text;
    ie.Close();

    labelResult.Text = String.Format("The result is {0}", result);
}