我想用 xpath 获取一堆 dom 对象并循环遍历它们以检查它们是否包含指定的文本,这在 Selenium IDE 或 rc 中是否可行?Perl 是我的首选语言
XPath 类似于 xpath=//tbody[@class='table-data']/tr/td/div[@class='table-item']
这将返回表中的所有行项目,但我需要检查每个 div 是否包含指定的文本字符串。这对 Selenium 可行吗?
此致
我想用 xpath 获取一堆 dom 对象并循环遍历它们以检查它们是否包含指定的文本,这在 Selenium IDE 或 rc 中是否可行?Perl 是我的首选语言
XPath 类似于 xpath=//tbody[@class='table-data']/tr/td/div[@class='table-item']
这将返回表中的所有行项目,但我需要检查每个 div 是否包含指定的文本字符串。这对 Selenium 可行吗?
此致
该WWW::Selenium
模块非常适合您的需求。
从另一个问题的旧答案:
它支持通过 xpath 元素、表 ID、文本(正则表达式匹配!)和 URL 访问元素...
您需要下载Selenium Remote Control 并让它在后台运行以使模块工作。
需要注意的是,如果您的页面加载时间不可预测,它可能不是一个好的选择。
如果您只想对 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 可能有点偏离,但你明白了。