2017-02-02 2 views
-2

Ich möchte den Text mit Xpath für 2 Elemente erhalten und dann verketten.Text von XPath mit Java zurückgeben?

<td><span class="placeholder">hello</span> 
     <span class="placeholder2">bye</span> 
    </td> 

So möchte ich "Hallo Tschüss" als Zeichenfolge erhalten.

Dies ist, was ich versuchte, die XPaths der Elemente für den Erhalt:

By byXpath =(By.xpath("//td[@class='placeholder'/text()][1]"); 
By byXpat =By.xpath("//td[@class='placeholder2'/text()][1]"); 

der Wert „1“ ist aufgrund der Tatsache, dass ich die gleichen td wiederholenden Elemente für ein paar Mal und ich habe will nur den ersten. Danke

+0

auf diese Weise versuchen .. 'String Hallo = driver.findElement (By.xpath (" // Spanne [@ class = 'Platzhalter'] ")). getText(); \t System.out.println (Hallo); ' –

+0

Dies funktioniert nicht :(Ich kann getText() Methode nicht verwenden. – locket23

+0

Könnten Sie versuchen," "td [span [@ class =" Platzhalter "] und span [@ class = "placeholder2"]]/text() ''? – Andersson

Antwort

-1

Sie können concat Funktion verwenden, um zu bekommen, was Sie wollen. XPath ist:

concat((//td/span[@class="placeholder"])[1], " ", (//td/span[@class="placeholder2"])[1])

vorausgesetzt, Sie das folgende XML haben:

<root> 
<td><span class="placeholder">hello</span> 
     <span class="placeholder2">bye</span> 
    </td> 
<td><span class="placeholder">hello2</span> 
     <span class="placeholder2">bye2</span> 
    </td> 
</root> 

XPath wählt den ersten td/span Elemente und concats

hello, Raum und bye was zu hello bye

+0

Ich bin sehr neugierig zu wissen wer das abgelehnt und warum? Ich kann viel lernen. Danke. – SomeDude

0
string(//td) 

aus:

'\n  hello\n  bye \n ' 

OR:

normalize-space(//td) 

aus:

'hello bye'