使用通配符选择多个元素

时间:2017-11-29 18:13:49

标签: html selenium

我在html中有几个输入。如何编写带通配符的xpath查询来替换name属性中的数值以选择所有输入元素?我试过//div/input[contains(@name, "name")],它有效,但我更喜欢使用通配符。类似于//div/input[@name="models[.*.].name"]

html:

<div>
    <input type="text" name="models[1].name" value="">
    <input type="text" name="models[2].name" value="">
    <input type="text" name="models[3].name" value="">
    <input type="text" name="models[4].name" value="">
    <input type="text" name="models[5].name" value="">
    <input type="text" name="models[6].name" value="">
</div>

1 个答案:

答案 0 :(得分:0)

试试这个CssSelector

input[name^='models'][name$='.name']

这将为您提供名称以模型开头并以.name

结尾的所有输入

使用

还可以在XPath中执行此操作
//input[starts-with(@name, 'models') and ends-with(@name, '.name')]

但只有使用XPath 2.0的浏览器才支持此功能,因此 在Chrome中工作

另一种方法是使用Xpath 1.0兼容的方式,这是不可读的

//input[starts-with(@name, 'models') and substring(@name, string-length(@name) - string-length('name') +1) = 'name']