隐藏浏览器弹出窗口 - Watin

时间:2016-09-05 14:47:21

标签: c# popup watin

我在Windows窗体应用中使用Watin库。为了隐藏浏览器,我使用以下指令:

Settings.Instance.MakeNewIeInstanceVisible = false;

但是,它不会隐藏弹出窗口(当模拟单击打开弹出窗口的元素时)。 有没有办法隐藏它们?

2 个答案:

答案 0 :(得分:0)

我检查了released notes并发现了这个:

  

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

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

答案 1 :(得分:0)

您可以通过运行一些javascript代码以编程方式执行此操作,并使window.open函数无效!

示例

UTF-8 BOM是我制作的测试页面,其格式非常简单,当用户点击 Sum 按钮时,它总结了numA + numB它会在<span id="result"></span>元素中显示结果。结果文本更新后,它会通过调用window.open打开一个弹出窗口。为了使这个弹出窗口消失,我们需要消除window.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注入之前运行程序(Popup显示)

Here

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

Popup without javascript injection