2016-06-02 18 views
0

Chromeでvb.netを使用してウェブサイトの自動化にSeleniumを使用しています。ダウンロードボタンのURLが直接ないウェブサイトからダウンロードします)どのように.net(C#またはvb.net)のセレンでこれを行うには?セレンを使用してURLを直接入力せずにファイルをダウンロードする

もし私がユーザーがダウンロードボタンをクリックし、ダウンロードパスを設定し、完全なイベントをダウンロードするようなことをコントロールしたときに通知を受けたいと思っています。

ダウンロードパスの設定ができない場合は、少なくともダウンロード完了後にダウンロードしたパスを取得したいと考えています。 私の要件を達成するには?

私を助けてください。

答えて

3

ダウンロードは、使用しているブラウザによっては面倒な作業になることがあります。幸運にも、あなたはあまりにも多くのトラブルを避けるべきであるChromeを使用しています。

まず、ファイルのダウンロードを開始するボタンを探す必要があります。

driver.FindElement(<locator here>).click() 

ダウンロードが開始されているはずです。ただし、ダウンロードが完了するまでに少し時間がかかることがあります。したがって、新しいファイル(またはファイル名がわかっている場合は特定のファイル)のダウンロードフォルダをポーリングする必要があります。ドライバの作成時にダウンロードフォルダを指定することができます。

var options = new ChromeOptionsWithPrefs(); 
     options.prefs = new Dictionary<string, object> 
     { 
      { "download.default_directory", "path/to/downloads/folder" } 
     }; 
     RemoteWebDriver driver = new ChromeDriver("path/to/driver", options); 

今、あなたは、あなたがダウンロードしたファイルのファイル名にこのファイル名を比較することができますループで

var directory = new DirectoryInfo("path/to/downloads/folder"); 
var myFile = directory.GetFiles() 
      .OrderByDescending(f => f.LastWriteTime) 
      .First(); 

を実行して、このフォルダ内の最新のファイルを見つけることができます。このループにタイムアウトを追加し、予想された時間内にダウンロードされない場合は、テストに失敗する可能性があります。

注:私は、コードの一部が完全に動作するではないかもしれないので、この言語に精通していないんだけど、それはあなたのアイデア

+0

を与えるだろう、私はそれを実装しようとします、ありがとうございました。プログラムのダウンロードポップアップを受け入れる方法を知っていますか? chromeOptions.AddUserProfilePreference( "disable-popup-blocking"、 "true");私のために働いていません。 –

+0

@ITresearcherブラウザによって異なります。 Firefoxでは無効にすることができます。 Chromeでは、下部のバーだけが表示されます。セレンを使用してこれを処理することはできませんので、AutoITのようなものを使用して調べる必要があります。私はそれを使用したことがないので、これでさらにあなたを助けることはできません。 – RemcoW

関連する問題