Différence entre //, .// et ..// dans XPath?

Sep 22 2020

Quelqu'un peut-il s'il vous plaît aider avec la différence entre les XPath ci-dessous et m'aider à comprendre lequel de ceux-ci utiliser quand. J'ai trouvé que les trois fonctionnent mais je ne sais pas quand les utiliser.

  1. Get Element Text ${output} //priority

  2. Get Element Text ${output} .//vrrp-group/name

  3. Get Element Text ${output} ..//track/priority-hold-time

Réponses

2 kjhughes Sep 22 2020 at 20:57

En général

//sélectionne parmi les nœuds descendants ou autonomes (le long de l' descendant-or-selfaxe ). C'est l'abréviation de /descendant-or-self::node()/.

  1. // commence à partir du nœud racine, couvrant ainsi tout le document.
  2. .//commence à partir du nœud de contexte .
  3. ..// commence à partir du parent du nœud de contexte.

Dans votre cas particulier

  1. //prioritysélectionne tous les priorityéléments du document.
  2. .//vrrp-group/namesélectionne, sous le nœud de contexte, tous les nameéléments avec un vrrp-groupparent.
  3. ..//track/priority-hold-timesélectionne, sous le parent du nœud de contexte, tous les priority-hold-timeéléments avec un trackparent.

Note de Robotframework:

Dans le contexte de la Get Element Textcommande de la bibliothèque XML Robotframework, le XPath doit être relatif au nœud source ( ${output}dans votre cas). Les XPaths absolus tels que //priorityne sont pas autorisés là-bas.

Voir également

  • Différence entre "//" et "/" dans XPath?
  • Quelle est la différence entre .// et // * dans XPath?
  • Quelle est la signification de .// dans XPath?