Xpath: как выбрать опцию на основе свойства text not value?
рассмотрим оба типа:
<select name="garden">
<option>Flowers</option>
<option selected="selected">Shrubs</option>
<option>Trees</option>
<option selected="selected">Bushes</option>
<option>Grass</option>
<option>Dirt</option>
</select>
Является ли @val
для фактического указания атрибута value=""
?
Является ли @value
для указания значения innerText?
например, что произойдет, если <option>
не содержит никакого свойства value=""
. как бы вы это выбрали?
select/option[@value = "Grass"]
Происходит ли Xpath автоматически игнорировать пробелы для вышеприведенного случая? Следует ли обрезать?
EDIT:
для выбора нескольких параметров это достаточно?
select/option[normalize-space(text())="Grass" or normalize-space(text())="Trees"]
Ответы
Ответ 1
Для выбора по текстовому значению вы можете использовать функцию text()
. И требуется нормализовать пробелы, потому что они не удаляются по умолчанию. Вот пример:
select/option[normalize-space(text())="Grass"]
@value
- значение атрибута "значение"
@val
- значение атрибута "val"
normalize-space()
- функция возвращает строку аргумента с пробелом, нормализованным путем удаления начального и конечного пробелов и замены последовательностей символов пробела на единое пространство
Ответ 2
Ну, если пробел не является проблемой:
/select/option[.='Grass']
Мне нужно было бы проверить пробелы. Вы всегда можете нормализовать:
/select/option[normalize-space(.)='Grass']