2011-07-15 6 views
2

問題:私のコードは、リモートシステムと定期的にファイルを交換する必要があります。唯一のアクセス方法は、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と多くの依存関係を避けることを望んでいます。

提案がありますか?

+0

セレンと他のオートメーションとの組み合わせが可能ですか?キーストローク(AutoItまたはAutoHotkey)によるダウンロードダイアログの確認など。また、ファイルをどこかに保存することができれば、コマンドラインコピーで移動することもできます。 – Cilvic

+0

自動キーストロークを介してダウンロードを確認する - さて、私はヘッドレスを実行することを望んでいる! (また、私は言及すべきでした - これはLinuxボックスです。) こんにちは、クライブ。提案してくれてありがとう:-)はい、私はコマンドラインのコピーを介してファイルを移動することができますが、どこに行くかを追跡し、オートメーション内部からその情報を外部に渡すことは、少しばかりであろう。 –

+0

あなたは実際にJSを実行するには?またはJSを解析して必要なリンクを取得するコードを記述できますか? – Gabe

答えて

0

はJavaScriptを読んで、それを理解することができればJavascriptが偽造することができ、キーストローク

0

を経由してダウンロードダイアログを確認するのAutoItやAutoHotkeyをのような他の自動化ソフトウェアとセレンを結合します。私はwww :: mechanizeでたくさんのことをしました。あなたはwww :: mechanizeとうそをついて、あなたにjavascriptがあると言うことができます。最も一般的には、javascriptは送信されるデータをマッサージするために使用されるので、自動化されたスクリプトがjavascriptの正しいデータを送信していることを確認するだけです。 JavaScriptは100%のクライアント側であるため、JavaScriptを補間するブラウザです。手で行うことができないjavascriptはありません。何かは非常に乱雑です。私はあなたがwwwと一緒に使うことができるjavascriptのインタプリタかもしれないと思う::私はおそらく私自身を作ることができたが、私はむしろ誰かが作ったjavascriptエンジンを使用してみたいと思う。私がほとんどのサイトに言ったように、正しいデータを送信するだけであり、www :: mechanizeスクリプトを書くのは難しいはずです。ページを呼び出すたびに、返された内容が印刷され、必要な項目が解釈されて送信されます。

私が言及していない別の方法は、次のようにインストールします。仮想マシンをインストールしてWindows VMをインストールし、それにvbscriptを使用します。または、Linuxのvmをfirefoxで使用し、スクリプトを使用してください。あなたはrdpを使ってあなたのVMに接続し、ヘッドレスのマシンでないかのように使用することができます。

関連する問題