Как найти текст для нескольких элементов, используя find_elements

Я довольно новичок в использовании 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', сохраненный в массиве.

1 ответ

Вы можете напрямую указать на тег span, используя этот xpath.

//tbody/tr/td/div/span[contains(text(),'matching text')]
Другие вопросы по тегам