我在Windows窗体应用程序中使用Watin库.为了隐藏浏览器,我使用以下指令:
Settings.Instance.MakeNewIeInstanceVisible = false;
Run Code Online (Sandbox Code Playgroud)
但是,它不会隐藏弹出窗口(当模拟单击打开弹出窗口的元素时).有没有办法隐藏它们?
您可以通过运行一些 JavaScript 代码并让函数window.open不执行任何操作来以编程方式完成此操作!
例子
这是我制作的一个测试页面,它具有非常简单的形式,当用户单击Sum按钮时,它会求和numA+numB并将结果显示在<span id="result"></span>元素内。结果文本更新后,它通过调用打开一个弹出窗口window.open。为了让这个弹出窗口消失,我们需要消除这个window.open函数:
window['open'] = function() { return false; }
Run Code Online (Sandbox Code Playgroud)
要使用 Watin 来做到这一点,我们必须使用该Eval函数并注入 JavaScript 代码,如下所示:
browser.Eval("window['open'] = function() { return false; }");
Run Code Online (Sandbox Code Playgroud)
然后,仅针对该页面加载的所有弹出窗口都消失了,我们就得到了想要的结果。
示例 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);
}
Run Code Online (Sandbox Code Playgroud)
程序在 javascript 注入之前运行(弹出窗口出现)
javascript 注入后运行的程序(弹出窗口消失了)
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |