Web浏览器控件导航不工作Windows 10

时间:2017-09-24 18:51:22

标签: c# navigation webbrowser-control

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

我尝试使用selenium Firefox驱动程序,但每次firefox获取更新时这都会破坏。

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

我创建了一个简单的Windows窗体来测试应用程序并将控件放入其中,它是可见的。当代码遇到Navigate方法时,它会被卡住,因为它从不执行DocumentCompleted事件。我试图删除wait方法,但WebControl中的文档仍为null,并且永远不会执行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();
        }
    } 

1 个答案:

答案 0 :(得分:1)

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

你不应该做

WebBrowser browser = new WebBrowser();

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