【问题标题】:WebBrowser Control Navigation Not Working Windows 10WebBrowser 控件导航不起作用 Windows 10
【发布时间】:2018-03-05 17:48:09
【问题描述】:

我有一个应用需要导航到一些网站,点击一些按钮/链接来导航并最终直接下载文件。

我尝试使用 selenium Firefox 驱动程序,但每次 Firefox 更新时都会中断。

我决定改用 WebBrowser Control,并在线查看了所有示例,但由于某种原因,导航没有发生,并且 Documentcompleted 事件没有触发。

我创建了一个简单的 Windows 窗体来测试应用程序并将控件放入其中,它是可见的。当代码遇到 Navigate 方法时,它会卡住,因为它从不执行 DocumentCompleted 事件。我试图删除等待方法,但 WebControl 中的文档仍然为空,并且 DocumentCompleted 永远不会执行。 Documentcompleted 中的断点永远不会被命中(我把断点放在 if 级别)

我使用的是 Visual Studio 2015,我安装了 Windows Pro 10。我也有 IE 11 和 Edge,但我的默认浏览器是 Chrome。 (我不认为这使用 Chrome) Windows 应用正在运行 .NET 4.5.2

客户端也在运行 Windows 10。我阅读了一些关于 Windows 10 更新潜在问题的回复,并希望更改注册表或卸载某些更新,但我真的不想走这条路。有什么想法或替代方案吗?

这是后面的表单代码 我要导航到的页面是公开的,不需要登录。

  public partial class WebBrowserForm : Form
  {

        bool pageLoaded = false;

        public WebBrowserForm()
        {
            InitializeComponent();
        }

        public void TestDownload()
        {
            WebBrowser browser = new WebBrowser();
            browser.Visible = true;
            browser.AllowNavigation = true;

            pageLoaded = false;
            browser.DocumentCompleted += Browser_DocumentCompleted;
            browser.Navigate("http://apps.ahca.myflorida.com/dm_web/");
            waitForPageLoading();
                //do something else here once the page is loaded

        }

        private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if ((sender as WebBrowser).ReadyState == System.Windows.Forms.WebBrowserReadyState.Complete)
            {
                pageLoaded = true;
            }
        }


        void waitForPageLoading()
        {
            while (pageLoaded == false)
            {
                Thread.Sleep(3000);// keep sleeping until the page is ready   
            }
        }

        private void btnTest_Click(object sender, EventArgs e)
        {
            TestDownload();
        }
    } 

【问题讨论】:

  • 我在 Windows 7 机器上试过了,还是不行

标签: c# navigation webbrowser-control


【解决方案1】:

由于您的 WebBrowser 控件位于表单上,

你不应该这样做

WebBrowser 浏览器 = new WebBrowser();

您正在实例化一个新实例。

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    相关资源
    最近更新 更多