2

私は、SeleniumRCサーバーと対話してWebページにアクセスしてソースをダウンロードするWWW::Seleniumモジュールを使用して簡単なperlスクリプトを作成しました。HTMLページでこれを行うことができます。ただし、ソースをダウンロードしたいXMLページがあります。これは、「get_source_html()」関数では明らかに不可能です。以下は私がやりたいことのスクリプトです:

#!/usr/bin/perl -sw
use WWW::Selenium;

print "\n setting up Selenium...\n";
my $sel = WWW::Selenium->new( host => "localhost",
port => 4444,
browser => "*firefox",
browser_url => "http://www.google.com",
);

print " starting Selenium...\n";
$sel->start;

$sel->open('someXMLpage...');
$sel->wait_for_page_to_load();

my $xml = $sel->get_html_source();
print $xml;

ご覧のとおり、get_html_sourceは、ページがhtmlではないというエラーを返すため、明らかに問題です。ページの種類に関係なく、ブラウザに表示されている現在のページをダウンロードする方法はありますか(Firefoxの[ソースの表示]をクリックするか、さらに良い方法:get_source()関数など)?また、使用する必要のあるURLは「.xml」ファイルのようなものではないことに注意してください。それが何かを意味する場合、ページはその場で生成されます...

どんな知恵も大歓迎です!

4

3 に答える 3

1

SeleniumRCget_page_source()関数が必要です。「ページ」がHTMLでなくても(XMLだけでなくプレーンテキストでも)機能します。

于 2012-09-11T23:53:11.167 に答える
0

Selenium :: Remote :: Driver Perlモジュールは、get_page_source関数を提供します。

一方、WWW::Seleniumはそのような方法を提供していません。これは、開始と終了の「html」タグの間にHTMLソース全体を返すget_html_source関数のみを提供します。

ただし、WWW :: Seleniumを介してXMLドキュメントのコンテンツを取得するための回避策は、代わりにジョブを実行するJavaScriptスニペットを評価するためにget_eval関数を使用することです。たとえば、次の行は、ブラウザウィンドウに含まれるドキュメントのルートノード/要素のXMLコンテンツを返します。

my $xml = $sel->get_eval("new XMLSerializer().serializeToString(window.document.documentElement)");
于 2013-12-16T09:11:50.863 に答える
-1

試してみてください:

$sel->get_body_text();
于 2012-09-07T10:15:55.247 に答える