隐藏浏览器弹出窗口 - Watin
Hiding browser popups - Watin
我在 windows 表单应用程序中使用 Watin 库。为了隐藏浏览器,我使用了这条指令:
Settings.Instance.MakeNewIeInstanceVisible = false;
但是,它不会隐藏弹出窗口(模拟点击打开弹出窗口的元素时)。
有办法隐藏它们吗?
我检查了 released notes 并发现了这个:
By default WatiN tests make the created Internet Explorer instances
visible to the user. You can run your test invisible by changing the
following setting. Be aware that HTMLDialogs and any popup windows
will be shown even if you set this setting to false (this is default
behavior of Internet Explorer which currently can't be suppressed).
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
您可以通过 运行 一些 javascript 代码以编程方式完成此操作,并使 window.open
函数不执行任何操作!
例子
Here 是我制作的一个测试页面,它具有非常简单的形式,当用户单击 Sum 按钮时,它会汇总 numA
+ numB
并在 <span id="result"></span>
元素中显示结果。结果文本更新后,它通过调用 window.open
打开一个弹出窗口 window。为了让这个弹窗window消失,我们需要去掉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 注入后(弹出窗口消失)
我在 windows 表单应用程序中使用 Watin 库。为了隐藏浏览器,我使用了这条指令:
Settings.Instance.MakeNewIeInstanceVisible = false;
但是,它不会隐藏弹出窗口(模拟点击打开弹出窗口的元素时)。 有办法隐藏它们吗?
我检查了 released notes 并发现了这个:
By default WatiN tests make the created Internet Explorer instances visible to the user. You can run your test invisible by changing the following setting. Be aware that HTMLDialogs and any popup windows will be shown even if you set this setting to false (this is default behavior of Internet Explorer which currently can't be suppressed).
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
您可以通过 运行 一些 javascript 代码以编程方式完成此操作,并使 window.open
函数不执行任何操作!
例子
Here 是我制作的一个测试页面,它具有非常简单的形式,当用户单击 Sum 按钮时,它会汇总 numA
+ numB
并在 <span id="result"></span>
元素中显示结果。结果文本更新后,它通过调用 window.open
打开一个弹出窗口 window。为了让这个弹窗window消失,我们需要去掉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 注入后(弹出窗口消失)