1

我正在 VB.net 中开发一个网络爬虫,并使用 System.Forms.WebBrowser 对象来处理使用 javascript 或表单帖子的网站上的导航,但我遇到了问题。当我向后导航 (WebBrowser.GoBack()) 到加载了表单帖子的页面时,该页面已过期,我必须刷新才能重新发送请求。当我调用刷新 (WebBrowser.Refresh()) 时,会弹出一个对话框进行确认。有没有办法可以在代码中绕过这个模态对话框?谢谢!

4

3 回答 3

2

您可以传入 System.Windows.Forms.WebBrowserRefreshOption 类型的刷新选项。

有几个选项,这里描述:http:
//msdn.microsoft.com/en-us/library/system.windows.forms.webbrowserrefreshoption.aspx

这些选项似乎是您以编程方式控制 Web 浏览器刷新的唯一方法。

于 2009-04-20T17:42:35.437 回答
1

我有一个类似的问题,弹出一个带有 javascript 警告的弹出窗口。我设法使用window_error事件来抑制它。

我将此行添加到browser_completed事件处理程序:

((WebBrowser)sender).Document.Window.Error +=
    new HtmlElementErrorEventHandler(Window_Error);

这是我的window_error事件处理程序:

void Window_Error(object sender, HtmlElementErrorEventArgs e)
{
    e.Handled = true;
}

另一个需要考虑的选择是玩弄this._browser.ScriptErrorsSuppressed. 我很确定您没有收到脚本错误,但值得一试。

于 2009-07-20T13:42:44.783 回答
0

我在这里找到了解决此问题的解决方法/hack:http://www.experts-exchange.com/Programming/Languages/.NET/Q_25160302.html

基本上你这样做:

Browser.Refresh(WebBrowserRefreshOption.Completely);
SendKeys.Send("{Enter}");

SendKeys.Send("{Enter}");行向活动窗口发送一个 Enter 键,这是我们想要摆脱的模式对话框。

于 2011-10-20T12:52:39.427 回答