如何使用Perl WWW :: HtmlUnit模拟“a”链接上的点击

时间:2011-08-30 20:30:47

标签: perl unit-testing htmlunit

我正在使用Perl和WWW :: HtmlUnit库来访问以下站点:   https://www.cnatra.navy.mil/scheds/schedule_data.aspx?sq=VT-7

我可以加载页面,点击“查看时间表”和“搜索”按钮,但我无法点击ctrl日历中的其中一个编号日。

我一直在查看click()函数,但是我必须在调用此函数之前定义我想要单击的链接。

我有什么想法可以让程序找到并点击这些链接?

以下是网站上的代码,用于描述我要点击的链接:

<td align="center" style="width:14%;">
    <a href="javascript:__doPostBack('ctrlCalendar','4241')"
       style="color:Black" title="August 12">12</a>
</td>

这是我将把它放入的简化代码:

use WWW::HtmlUnit;
use Inline::Java;

my $webClient = WWW::HtmlUnit->new;
$webClient->setUseInsecureSSL(1);
my $page = $webClient->getPage("https://www.cnatra.navy.mil/scheds
/schedule_data.aspx?sq=vt-7");

###define $daylink element here. This is the calendar link I want to click

my $sched = $daylink->click();  
my $content = $sched->asXml;
print "\n$content\n\n";

1 个答案:

答案 0 :(得分:1)

由于表和TR / TD以及链接都没有ID /名称,因此您需要通过属性搜索找到相应的元素。幸运的是,HTMLUnit仅为此提供了一个API:getOneHtmlElementByAttribute

尝试这样的事情(没有测试,因为我没有访问权限)

my $ancestor = $page->getBody();
my $daylink = $ancestor->getOneHtmlElementByAttribute('a', 'title', 'August 12');