Elemento xpath che contiene un attributo e il cui genitore del genitore contiene un altro attributo

StackOverflow https://stackoverflow.com/questions/2181406

Domanda

Questo è il mio primo post qui e da quando ho visto molte grandi risposte ho pensato di provarlo.

Sto cercando di usare XPath per ottenere un elemento specifico in un documento HTML. Ecco un esempio basato sulla pagina Web di Google:

<html>
  <head>
    <title>XPath Test</title>
  </head>
  <body>
    <form name='f'>
      <table>
        <tbody>
          <tr>
            <td>
              <input name='q' type="text" />
            </td>
          </tr>
        </tbody>
      </table>
    </form>
  </body>
</html>

Usando l'esempio sopra (che è semplificato per gli scopi di chiedere aiuto), vorrei essere in grado di trovare l'elemento di input il cui nome = 'q' e che ha un antenato che ha 5 genitori con il nome = 'f '.

Ad esempio, se dovessi farlo nella sintassi di SWAT che è una libreria di test di automazione Web open source situata a http://ulti-swat.wikispaces.com, la sintassi sarebbe la seguente:

| AsserTelementExists | espressione | name = q; parentelement.Parentelement.Parentelement.Parentelement.Parentelement.Name = F | Input |

Ho appena iniziato a imparare XPath e sto cercando di capire come combinare i predicati con gli assi. È possibile fare espressioni come questa con XPath? In tal caso, qualcuno può essere ben informato per favore?

È stato utile?

Soluzione

Potresti fare:

//input[@name='q' and ancestor-or-self::*[@name='f']]
// -- input element whose name='q' and who has an ancestor with the name='f'

o

//input[@name='q' and ../../../../../../*[@name='f']]
// -- input element whose name='q' and who is 5 parents up with the name='f'

Puoi usare questo desktop Visualizzatore XPath Per testare le tue espressioni XPath. UN Il tutorial di base è disponibile qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top