問題:私のコードは、リモートシステムと定期的にファイルを交換する必要があります。唯一のアクセス方法は、JavaScriptが動作するために必要なWeb "ポータル"を使用するHTTPS経由です。ログインしてページをナビゲートすると、ファイルはWebフォームを使用してアップロードされ、リンクをクリックしてダウンロードされます。このシステムと対話する必要があるコードは、ヘッドレスサーバーで実行されます。ファイルをディスクに保存する機能を含む、ヘッドレスマシンのスクリプトを使用してウェブサイトと対話するにはどうすればよいですか?
私はかなりの研究をしました。 JSをサポートするための要件、および取得したファイルをディスクに書き込むことができるという要件、ヘッドレスの要件は、私の選択肢を大幅に狭めるようです。
サイトにアクセスし、DOMをロードして必要なJSを実行し、ときにはpage.save( "filename")とfilecontrol.attach( "filename ");私はPerl、Python、またはJavaScriptで何かを好むだろう。私はフリーソフトウェアソリューションを強く望んでいます。
私の理解では、次のとおりです。
セレン:Can't save files to disk - 少なくとも、ない任意の場所に
zombie.js:同上
phantom.js:Ditto
WWW:機械化:なしJavaScriptの
wgetの:同上
ツイル:同上
imacrosの:Firefox用ではないフリーソフトウェア
TestGen4Web:メンテナンスされていない
たとえば、 Perl Seleniumドライバを使用すると、DOMからファイルのURLを取得し、ファイルを取得するために別のWebリクエストを起動できます(もし私がCookieを偽造できた場合)。しかし、それは醜いようです。
私はHTTPUnitがこれをすべて行うことができると思いますが、Javaと多くの依存関係を避けることを望んでいます。
提案がありますか?
セレンと他のオートメーションとの組み合わせが可能ですか?キーストローク(AutoItまたはAutoHotkey)によるダウンロードダイアログの確認など。また、ファイルをどこかに保存することができれば、コマンドラインコピーで移動することもできます。 – Cilvic
自動キーストロークを介してダウンロードを確認する - さて、私はヘッドレスを実行することを望んでいる! (また、私は言及すべきでした - これはLinuxボックスです。) こんにちは、クライブ。提案してくれてありがとう:-)はい、私はコマンドラインのコピーを介してファイルを移動することができますが、どこに行くかを追跡し、オートメーション内部からその情報を外部に渡すことは、少しばかりであろう。 –
あなたは実際にJSを実行するには?またはJSを解析して必要なリンクを取得するコードを記述できますか? – Gabe