我正在使用webbrowser控件在VS 2010 C#中开发Windows窗体应用程序.我的目标是在这个网站中自动导航,但是当我在某一点上时,网站将弹出一个javascript警报,这将停止自动化直到我按下OK按钮.我有点通过在弹出时模拟输入按钮来解决问题,但是应用程序应该保持专注以使其工作.我的问题是,有没有办法从网站上杀死这个自定义的JavaScript警报(我没有访问方,从客户端杀死它)所以它没有显示或任何其他方法来解决这个问题?显示的javascript警报(消息框)不是错误,是由于某种原因该网站的程序员放置的javascript警报.
您可以尝试使用该事件并在页面加载之前Navigated拦截以删除引用。DocumentTextalert(...);
来自NavigatedMSDN 页面:
处理该事件以在控件导航到新文档
Navigated时接收通知。WebBrowser当该Navigated事件发生时,新文档已开始加载,这意味着您可以通过Document、DocumentText、 和DocumentStream属性访问加载的内容。
这是一些代码:
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace Your.App
{
public class PopupSuppress
{
WebBrowser _wb;
public PopupSupress()
{
_wb = new WebBrowser();
_wb.Navigated += new WebBrowserNavigatedEventHandler(_wb_Navigated);
}
void _wb_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
string alertRegexPattern = "alert\\([\\s\\S]*\\);";
//make sure to only write to _wb.DocumentText if there is a change.
//This will prompt a reloading of the page (and another 'Navigated' event) [see MSDN link]
if(Regex.IsMatch(_wb.DocumentText, alertRegexPattern))
_wb.DocumentText = Regex.Replace(_wb.DocumentText, alertRegexPattern, string.Empty);
}
}
}
Run Code Online (Sandbox Code Playgroud)
来源/资源:
| 归档时间: |
|
| 查看次数: |
2191 次 |
| 最近记录: |