考虑两种类型:
<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是否会自动忽略上述情况的空格?它应该被修剪吗?
编辑:
选择多个选项就足够了吗?
select/option[normalize-space(text())="Grass" or normalize-space(text())="Trees"]
答案 0 :(得分:27)
要按文字值选择,您可以使用text()
功能。并且需要规范化空格,因为默认情况下不会删除它们。这是一个例子:
select/option[normalize-space(text())="Grass"]
@value
- “值”属性的值
@val
- “val”属性的值
normalize-space()
- 函数返回带有空格的参数字符串,通过剥离前导和尾随空格并用空格替换空白字符序列
答案 1 :(得分:12)
好吧,如果空格不是问题:
/select/option[.='Grass']
但是,我需要检查重新空格。你总是可以规范化:
/select/option[normalize-space(.)='Grass']