2017-11-29 5 views
0

Ich habe einige Eingabe in HTML. Wie kann ich eine xpath-Abfrage mit einem Platzhalterzeichen schreiben, um den numerischen Wert im Attribut name zu ersetzen, um alle Eingabeelemente auszuwählen? Ich habe versucht //div/input[contains(@name, "name")], es funktioniert, aber ich bevorzuge, einen Platzhalter zu verwenden. Etwas wie //div/input[@name="models[.*.].name"].Verwenden von Platzhalter, um mehrere Elemente auszuwählen

Die html: auch

<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> 
+0

Was willst du eigentlich? –

+0

Können Sie Ihre Code-Studien teilen? – DebanjanB

+0

Sie können eine Kombination von Starts mit und enden mit - https://StackOverflow.com/questions/26217002/how-to-use-starts-with-contains-and-ends-with-in-xpath- verwenden. zu-finden-die-xml-n – Grasshopper

Antwort

0

dieses CSSSelector Versuchen

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

Dadurch werden Sie alle Eingaben erhalten, die einen Namen haben, die mit den Modellen beginnt und endet mit .name Es

ist eine Möglichkeit, dies in XPath zu tun, indem

//input[starts-with(@name, 'models') and ends-with(@name, '.name')] 

Aber dies wird nur von Browsern unterstützt XPath 2.0 verwenden, so dass dies nicht Arbeit in Chrome

Die Alternative eine XPath 1.0 kompatibel Art und Weise zu verwenden ist, was nicht wirklich lesbar ist

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