1

我想用 xpath 获取一堆 dom 对象并循环遍历它们以检查它们是否包含指定的文本,这在 Selenium IDE 或 rc 中是否可行?Perl 是我的首选语言

XPath 类似于 xpath=//tbody[@class='table-data']/tr/td/div[@class='table-item']

这将返回表中的所有行项目,但我需要检查每个 div 是否包含指定的文本字符串。这对 Selenium 可行吗?

此致

4

2 回答 2

1

WWW::Selenium模块非常适合您的需求。

从另一个问题的旧答案

它支持通过 xpath 元素、表 ID、文本(正则表达式匹配!)和 URL 访问元素...

您需要下载Selenium Remote Control 并让它在后台运行以使模块工作。

需要注意的是,如果您的页面加载时间不可预测,它可能不是一个好的选择。

于 2010-05-05T13:24:04.013 回答
0

如果您只想对 HTML 进行 XPath 搜索,那么有许多模块可供选择,但Test::XPath看起来是其中最好的。

  use Test::XPath;

  my $html = ...get it however...

  # Create a Test::XPath object from your HTML
  my $tx = Test::XPath->new( xml => $html, is_html => 1 );

  # Test for the existence of your table rows.
  $tx->ok( q{//tbody[@class='table-data']/tr/td/div[@class='table-item']}, sub {
      # Run more tests on each node returned by the above xpath expression
      $_->like( './text()', qr/specified text/, "row contains the right text" );
  }, 'found table rows' );

我的 XPath 可能有点偏离,但你明白了。

于 2010-05-07T04:12:26.823 回答