【问题标题】:How to find text for multiple elements using find_elements如何使用 find_elements 查找多个元素的文本
【发布时间】:2019-11-26 12:02:36
【问题描述】:

我对使用 Selenium 远程驱动程序和 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”存储到数组中。

【问题讨论】:

    标签: perl selenium-remotedriver


    【解决方案1】:

    你可以使用这个xpath直接指向span标签。

    //tbody/tr/td/div/span[contains(text(),'matching text')]
    

    【讨论】:

    • @elements = $driver->find_elements("//tbody/tr/td/div/span[contains(text(),'匹配文本')]");该命令会将所有匹配的元素作为 Selenium Remote Webelement 哈希值存储到数组中。我如何从他们那里得到匹配的文本?
    猜你喜欢
    • 2013-11-14
    • 1970-01-01
    • 2021-01-26
    • 2017-12-28
    • 2016-08-22
    • 2021-07-25
    • 1970-01-01
    • 2021-07-14
    • 2012-12-27
    相关资源
    最近更新 更多