私はWebKitDotNetを使ってウェブブラウザをシミュレートし、自動化しています。これは本当に気の利いたもので、ほとんどの点で機能します。私はこのコードを実装しようとすると、しかし、WebKitのダウンロードをトリガしません:webkitdotnetを使用してC#でWebKitブラウザ経由でファイルをダウンロードできますか?
WebKitBrowser _b = null;
private void button1_Click(object sender, EventArgs e)
{
_b = new WebKitBrowser();
_b.DownloadBegin += new FileDownloadBeginEventHandler(b_DownloadBegin);
_b.Error += new WebKitBrowserErrorEventHandler(_b_Error);
_b.AllowDownloads = true;
_b.Navigate("http://sourceforge.net/projects/webkitdotnet/files/WebKit%20.NET%200.x/0.5/WebKit.NET-0.5-bin-cairo.zip/download");
}
void _b_Error(object sender, WebKitBrowserErrorEventArgs e)
{
MessageBox.Show("error!");
}
void b_DownloadBegin(object sender, FileDownloadBeginEventArgs e)
{
MessageBox.Show("hi");
}
どちらも「エラー」や「DownloadBegin」イベントが発生。私は少なくとも彼らの一人がそうすることを期待しています - 私は行方不明の設定がありますか?
編集:これは古い質問ですが、こちらは更新です。私はこの質問を書いたときに、1日に1回、ウェブサイトにログオンし、資格情報を提供し、ダウンロードリンクをクリックする必要があるプロセスを自動化しようとしていました。私たちは、この仕事をしている貧しい人の単調さを軽減するために、これをプログラムで実行できることを期待していました。
残念ながら、WebKitDotNetはこのタスクでは成功しませんでした。 Webkitベースのブラウザでは、リンクをクリックしてダウンロードを開始できますが、埋め込みWebKitDotNetではリンクをクリックしても何もしませんでした。私の推測では、WebKitDotNet内の何かがイベントを失ったということです。誰かがこれをテストしたい場合は、Sourceforgeダウンロードリンクを使ってテストすることができます。
「IMacros」と呼ばれるInternet Explorerの自動化ツールを使用して、私のチームの一員が最終的にこの問題を解決しました。この製品は、1)プログラムを実行するすべてのコンピュータにIEがインストールされていることを保証することができ、2)IMacrosがWebサイトからイベントを正しく受信し、ファイルのダウンロードをトリガーできるためです。課題トラッカーで
直接ダウンロードURLを使用する場合はどうすればよいですか?[link] http://downloads.sourceforge.net/project/webkitdotnet/WebKit%20.NET%200.x/0.5/WebKit.NET-0.5-bin-cairo .zip?r =&ts = 1318524392&use_mirror = sunet Webkitブラウザがページ上のjavascriptによって発生する5秒のタイムアウトを適切に処理していないと思います。 –
ダウンロードページを確認しましたが、実際のダウンロードURLに更新するためにjavascriptを使用していません。 meta http-equiv = "refresh"タグを使用します。これにより、ブラウザは実際には起こっていない実際のダウンロードURLに更新されます。私はこのプロジェクトのウェブサイト上でこれを言及する制限を見つけることができませんでした。 –
実際に私が直接ダウンロードを使用しない理由は、ダウンロードを許可するためにいくつかのサイト(ソースフォージではなく、他のサイト)がクッキーとセッションの複雑な相互作用を必要とすることです。だから私は問題を明らかにするためにパブリックドメインのオープンソースサイトを使ってテストを書いた。 –