Selenium RC Perl脚本如何获取xml页面的来源?

时间:2012-09-07 10:12:16

标签: xml perl selenium-rc

我用WWW :: Selenium模块编写了一个简单的perl脚本,该模块与Selenium RC服务器交互并转到网页并下载源代码。我可以用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”文件结尾。如果这意味着任何事情,页面就会动态生成......

任何智慧都非常感激!

3 个答案:

答案 0 :(得分:1)

您需要Selenium RC get_page_source()功能。即使“页面”不是HTML(甚至是纯文本,也不仅仅是XML),它仍然有效。

答案 1 :(得分:0)

Selenium :: Remote :: Driver Perl模块确实提供了get_page_source函数。

另一方面,WWW :: Selenium没有提供这样的方法。它只提供了一个get_html_source函数,它在开始和结束的“html”标签之间返回整个HTML源代码。

但是,通过WWW :: Selenium获取XML文档内容的解决方法是使用其get_eval函数来评估将完成此任务的JavaScript代码段。例如,以下行返回浏览器窗口中包含的文档的根节点/元素的XML内容:

my $xml = $sel->get_eval("new XMLSerializer().serializeToString(window.document.documentElement)");

答案 2 :(得分:-1)

尝试:

$sel->get_body_text();