2016-04-14 4 views
0

Ich benutze CasperJS und möchte auf ein Tabellenelement, das einen bestimmten Float-Wert hat klicken - aber es gibt einige vorangehende Leerzeichen, und ich weiß nicht, wie viel davon ist da.Wählen Sie Knoten mit Text mit XPath unabhängig von Leerzeichen in CasperJS

Zum Beispiel:

<td class="narrow value ng-binding"><i class="fa" ng-class="{...}"></i>   1,45</td> 

ich dieses Element versuchte gezielt, indem Sie:

this.click(x('//*[text()="1,45"]')); 

Aber ich bekomme:

Kann nicht klicken -Ereignis auf nicht vorhandenen Selektor: XPath-Ausdruck: '// * [text() = "1,45"]'

Kann jemand darauf hinweisen, wie man den Whitespace am Anfang ignoriert oder warum dies nicht funktioniert?

+2

Verwendung 'normalize-space (text())' – splash58

+0

es ist der gleiche - nicht vorhandene Selektor: XPath-Selektor: '// * [normalisiert Raum (Text() = "1,45")]' –

Antwort

1

Verwenden normalize-space() zu Leerzeichen am Anfang und Ende der Zeichenfolge ‚ignorieren‘:

//*[normalize-space(text())="1,45"] 

oder verwenden Sie das folgende Formular aus, falls der Zieltextknoten nicht der erste Kind Textknoten in seinem übergeordneten Elemente sein kann, :

//*[text()[normalize-space(.)="1,45"]] 

Von MDN:

Die normalize-space function strips Führender und abschließender whitespace von einer Zeichenkette, ersetzt Folgen von Leerzeichen durch ein einzelnes Leerzeichen und gibt die resultierende Zeichenkette zurück.

+1

die Die zweite Lösung war die richtige (nicht der erste untergeordnete Textknoten in seinem übergeordneten Element). Danke vielmals –

Verwandte Themen