代码之家  ›  专栏  ›  技术社区  ›  Kira

隐藏浏览器弹出窗口-Watin

  •  5
  • Kira  · 技术社区  · 8 年前

    Settings.Instance.MakeNewIeInstanceVisible = false;
    

    有办法把他们藏起来吗?

    2 回复  |  直到 8 年前
        1
  •  0
  •   Christos Lytras    8 年前

    您可以通过运行一些javascript代码并使 window.open 函数什么也不做!

    实例

    Here 是我制作的一个测试页面,它有一个非常简单的表单,当用户单击 总和 按钮,总结一下 numA + numB 并将结果显示在 <span id="result"></span> 要素结果文本更新后,它通过调用 打开新窗口 。为了使此弹出窗口消失,我们需要消除 打开新窗口 功能:

    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注入之前运行的程序(弹出窗口显示)

    Popup without javascript injection

    javascript注入后运行的程序(弹出窗口不见了)

    enter image description here

        2
  •  0
  •   Community Dai    7 年前

    我查过了 released notes

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

    IE.Settings.MakeNewIeInstanceVisible = false; // default is true
    

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

    我不知道这是否是一个解决方法,但如果那些弹出窗口不是 important 对你来说,为什么不阻止所有弹出窗口?

    How to turn off popup blocker through code in Watin?

    HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_WEBOC_POPUPMANAGEMENT
    Value = 0 for Off
    Value = 1 for On