2017-06-14 3 views
1

Je dois récupérer un div sans enfants avec le texte donné. Je html ceXpath trouver un div sans enfants avec un texte spécifique

<h1>Rest Object</h1> 
<div style="background-color: transparent;"> 
    <div>Title: Rest object</div> 
    <div>ID: 2</div> 
    <div>Title: Rest object Copy</div> 
    <div>Full text: This is the full text. ID: 2</div> 
    <div>Value: 0.564</div> 
    <div>Timestamp: 2017-06-14 11:35:40</div> 
</div> 

Je veux trouver <div>ID: 2</div>. Comment? J'ai essayé

xpath=(//div) 

et il renvoie d'abord div. J'ai essayé d'utiliser

xpath=(//div[not(div)]) 

et il retourne <div>Title: Rest object</div>.



MISE À JOUR. Maintenant je sais que je pourrais vous indexer.

xpath=(//div[not(div)][2]) 

<div>ID: 2</div>. Et si je ne connais pas l'index?

qui retourne

Répondre

1

Une façon d'obtenir le nécessaire div est d'utiliser starts-with() fonction:

//div[starts-with(.,'ID:')]  

boolean starts-with(string, string) - Retourne true si le premier argument chaîne commence par le deuxième argument chaîne; sinon retourne false


Pour restreindre la recherche à l'élément div qui n'a pas d'enfant, vous pouvez utiliser la fonction count(*):

//div[starts-with(.,'ID:')][count(*)=0] 
+0

Oui, ça marche! 'xpath = (// div [commence-avec (., 'ID')])'. Et si je veux un div sans enfants? –

+0

@YanKhonski, essayez '[pas (./*)]' prédicat – Andersson

+0

@YanKhonski, voir ma mise à jour – RomanPerekhrest