Xpath:如何根据文本而非value属性选择一个选项?

h34*_*34y 22 xpath

考虑两种类型:

<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>
Run Code Online (Sandbox Code Playgroud)

@val为了实际指示value=""属性?

@value用于指示的innerText值?

例如,如果<option>不包含任何value=""属性会发生什么.那你怎么选择呢?

select/option[@value = "Grass"] 
Run Code Online (Sandbox Code Playgroud)

Xpath会自动忽略上述情况的空格吗?它应该修剪?

编辑:

选择多个选项就足够了吗?

select/option[normalize-space(text())="Grass" or normalize-space(text())="Trees"]
Run Code Online (Sandbox Code Playgroud)

Iva*_*uev 27

要按文本值选择,您可以使用text()功能.并且需要规范化空格,因为默认情况下不会删除它们.这是一个例子:

select/option[normalize-space(text())="Grass"]
Run Code Online (Sandbox Code Playgroud)

@value - "值"属性的值

@val - "val"属性的值

normalize-space() - 函数返回带有空格的参数字符串,该空格通过剥离前导和尾随空格并用单个空格替换空白字符序列来规范化


Mar*_*ell 12

好吧,如果空格不是问题:

/select/option[.='Grass']
Run Code Online (Sandbox Code Playgroud)

不过,我需要检查一下这个空格.你总是可以规范化:

/select/option[normalize-space(.)='Grass']
Run Code Online (Sandbox Code Playgroud)