一部のサイトへの移動が必要なアプリケーションがあります。一部のボタン/リンクをクリックして、直接ファイルをダウンロードしてダウンロードします。WebBrowserコントロールのナビゲーションが機能しないWindows 10
私はセレン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();
}
}
Windows 7マシンで試したが、まだ動作しません – user3547425