如何从表中选择特定行?

时间:2011-08-01 16:53:05

标签: perl

我想知道如何从表中选择特定行,如小工具中所示。

自动获取以下代码:

use strict;

use warnings;
use Time::HiRes qw(sleep);
use Test::WWW::Selenium;
use Test::More "no_plan";
use Test::Exception;

my $sel = Test::WWW::Selenium->new( host => "localhost", 
                                    port => 4444, 
                                    browser => "*chrome", 
                                    browser_url => "http://10.102.163.3/" );

$sel->open_ok("/admin_ui/svm/html/main.html");
$sel->click_ok("//table[1]/tbody/tr/td[1]/div/table/tbody/tr/td[2]/img");    
$sel->click_ok("//input[\@value='Yes']");

有人可以在上面的编码中解释以下一行吗?

$sel->click_ok("//table[1]/tbody/tr/td[1]/div/table/tbody/tr/td[2]/img");

此外,每次选择一行并删除时,我都会收到相同的录音。

有人可以解释如何检查上面快照中显示的特定值,然后选择该行并删除它吗?

请用代码向我解释。

提前感谢。

1 个答案:

答案 0 :(得分:3)

  

有人可以在上面的编码中解释以下内容吗?   $sel->click_ok("//table[1]/tbody/tr/td[1]/div/table/tbody/tr/td[2]/img");

$sel是对Test :: WWW :: Selenium

类型的对象的引用

->click_ok()调用该对象的click_ok方法。

此方法的参数是locator

"//table[1]/tbody/tr/td[1]/div/table/tbody/tr/td[2]/img"是一个xpath表达式,用于指定要对其执行操作的HTML元素。

//表示定位器类型是xpath表达式。

table[1]指定表的第一次出现(可能有几个连续的表)

...

td[2]指定表数据元素的第二次出现。

其他部分应该是显而易见的。总的来说,它在嵌套表的第二列中指定了一个图像。


(更新)

  

任何人都可以解释如何检查如图所示的特定值   在上面的快照中,然后选择该行

要选择包含名为tr的属性且值为value的元素的"Yes",您可以使用

//*[@value="Yes"]/ancestor::tr

我使用以下代码测试xpath表达式

#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;

my $xml = <<END;
<table>
  <tr>
    <td>Foo</td>
    <td><input value="Yes" /></td>
  </tr>
  <tr>
    <td>bar</td>
    <td><a href="/woo.html">Woo</a></td>
  </tr>
</table>
END

my $xpath = '//*[@value="Yes"]/ancestor::tr';


my $parser = XML::LibXML->new;
my $doc = $parser->parse_string($xml);
my $n = 0;
for my $node ($doc->findnodes($xpath)) {
  print ++$n, ': ', $node->toString(), "\n";
}