您可以通过运行一些 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 注入后运行的程序(弹出窗口消失)