我对使用Selenium Remote Driver和Perl很陌生。我想做的是让Selenium使用部分文本匹配来找到页面上的所有元素。然后将这些元素的全文存储到数组中。
我尝试使用:
@elements = $driver->find_elements("//tbody/tr[td[2]/div/span[2][contains(text(),'matching text')]]")->get_text;
但是,这似乎不起作用。
我也尝试过:
@elements = $driver->find_elements("//tbody/tr[td[2]/div/span[2][contains(text(),'matching text')]]");
确实会使用webelements填充数组。
my @elements;
my @elementtext;
my $elementtext;
@elements = $driver->find_elements("//tbody/tr[td[2]/div/span[2][contains(text(),'matching text')]]");
foreach my $currentelement (@elements) {
$elementtext = $driver->find_element($currentelement)->get_text();
push @elementtext, $elementtext;
}
这会导致perl生成错误,因为webdriver无法找到该元素。关于我做错了什么以及如何解决的任何想法?我怀疑问题出在@elements数组的内容实际上不是xpath元素。
以下是html的示例:
<td>
<div class='cellContent'><a href="/link/1">Atlanta</a></div>
</td>
<td>
<div class='cellContent'>City</div>
</td>
<td>
<div class='cellContent'>Georgia</div>
</td>
<td class='sort_column'>
<div class='cellContent'>USA</div>
</td>
</tr>
<tr>
<td>
<div class='cellContent'><a href="/travelers/1">Joe Passenger</a></div>
</td>
<td>
<div class='cellContent'> <span>NFL</span>
<span>matching text: Atlanta.Falcons.team</span>
</div>
</td>
我想获取“匹配文本:Atlanta.Falcons.team”存储到数组中。
答案 0 :(得分:0)
您可以使用此xpath直接指向span标签。
//tbody/tr/td/div/span[contains(text(),'matching text')]