WebBrowser 控件导航不工作 Windows 10
WebBrowser Control Navigation Not Working Windows 10
我有一个应用程序需要导航到某些站点,单击一些 buttons/links 进行导航并最终直接下载文件。
我尝试使用 selenium Firefox 驱动程序,但每次 firefox 获得更新时,它都会出现故障。
我决定改用 WebBrowser 控件,并在线检查了所有示例,但由于某种原因,导航没有发生,Documentcompleted 事件也没有触发。
我创建了一个简单的 Windows 表单来测试应用程序并将控件放入其中,它是可见的。当代码遇到 Navigate 方法时,它会卡住,因为它从不执行 DocumentCompleted 事件。我试图删除 wait 方法,但 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,不需要登录。
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();
}
}
由于您的 WebBrowser 控件位于窗体上,
你不应该做
WebBrowser 浏览器 = new WebBrowser();
您正在实例化一个新实例。
我有一个应用程序需要导航到某些站点,单击一些 buttons/links 进行导航并最终直接下载文件。
我尝试使用 selenium Firefox 驱动程序,但每次 firefox 获得更新时,它都会出现故障。
我决定改用 WebBrowser 控件,并在线检查了所有示例,但由于某种原因,导航没有发生,Documentcompleted 事件也没有触发。
我创建了一个简单的 Windows 表单来测试应用程序并将控件放入其中,它是可见的。当代码遇到 Navigate 方法时,它会卡住,因为它从不执行 DocumentCompleted 事件。我试图删除 wait 方法,但 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,不需要登录。
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();
}
}
由于您的 WebBrowser 控件位于窗体上,
你不应该做
WebBrowser 浏览器 = new WebBrowser();
您正在实例化一个新实例。