【问题标题】:Hiding browser popups - Watin隐藏浏览器弹出窗口 - Watin
【发布时间】:2016-09-05 14:47:20
【问题描述】:

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

Settings.Instance.MakeNewIeInstanceVisible = false;

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

【问题讨论】:

  • 什么样的弹出窗口?像警报和确认这样的消息框?还是用window.open打开的新窗口?
  • 实际上是新窗口
  • 我通过向加载了 Watin 的页面注入一些 javascript 来实现这一点。请看我的回答。

标签: c# popup watin


【解决方案1】:

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

示例

Here 是我做的一个测试页面,它有一个非常简单的表格,当用户点击 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 注入之前运行的程序(弹出窗口)

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

【讨论】:

    【解决方案2】:

    我检查了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
    

    【讨论】:

    • 它们确实很重要:/
    • @HediNaily 好吧,你想要的不是他们提供的。我想也许你必须改变你的图书馆。
    猜你喜欢
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    相关资源
    最近更新 更多