1

JRubyでCelerityを使用して、特定のWebサイトからの.csvファイルのダウンロードを自動化しています。Webサイトの1つ(LinkShare)については、非常に近づいていますが、最後のステップを理解できません。

ウェブサイトはjavascriptと「hiddeniframe」メソッドを使用してファイルのダウンロードをプッシュします-通常のブラウジング中にダウンロードボタンをクリックすると、ダウンロードコンテンツを含む非表示のiframeを作成するjavascriptが呼び出され、ブラウザがそれを取得してユーザーにプロンプ​​トを表示しますファイルを保存します。

明らかに、Celerityではまったく同じようには機能しません。リンクをクリックすると、jirbに新しいiframeが表示されますが、メソッドを呼び出すことができず、次のようなエラーが発生します。

NoMethodError: undefined method `getDocumentElement' for #<Java::ComGargoylesoftwareHtmlunit::TextPage:0x184e6efc>

Celerity / Htmlunit / Javascript / Jrubyの経験が豊富で、私を正しい方向に向けることができる人はいますか?ダウンロードコンテンツ(.csvファイル)を取得したいだけです。

あるいは、タスクに適した(ヘッドレス)ブラウザー自動化ツールが存在する場合は、それを知っている人はいますか?

4

3 に答える 3

0

Mechanize はあなたのために働くかもしれません。それは、ヘッドレスのままでありながら、通常の人のブラウザーの使用法により似ていることを意図しています。

http://mechanize.rubyforge.org/

于 2010-11-03T23:40:18.400 に答える
0

ehsanul が言ったように、Mechanize は良い出発点かもしれません。ファイルを取得するには、アクセスされている URL を特定する必要があります。また、ホストへのセッションを識別する Cookie またはセッション ID を探します。Mechanize はそれをキャプチャして返す必要があります。

于 2010-11-04T02:18:05.977 に答える
0

最初に行うことは、フレームに移動していることを確認することです。フレーム (iframe であっても) は完全に別のウィンドウとして扱われ、最初にそこに移動する必要があります。Celerity::Frames クラスを確認してください。

それができない場合は、ブラウザをエミュレートするのではなく、ブラウザを制御するライブラリを試してみることをお勧めします。ブラウザーをエミュレートするライブラリー (htmlunit や mechanize など) には限界があり、その限界を見つけたことがあるかもしれません。これには、watir/firewatir を使用することをお勧めします。

于 2010-11-04T02:19:47.943 に答える