Как найти текст для нескольких элементов, используя 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')]