XPath -Element, das ein Attribut enthält und dessen Elternteil des Elternteils ein anderes Attribut enthält

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

Frage

Dies ist mein erster Beitrag hier und da ich viele großartige Antworten gesehen habe, dachte ich, ich würde es versuchen.

Ich versuche XPath zu verwenden, um ein bestimmtes Element in einem HTML -Dokument zu erhalten. Hier ist ein Beispiel auf der Google -Webseite:

<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>

Unter Verwendung des obigen Beispiels (das zum Zwecke, um Hilfe zu bitten), möchte ich das Eingabeelement finden, dessen Name = 'Q' und der einen Vorfahr hat, der 5 Eltern mit dem Namen = 'F hat '.

Zum Beispiel, wenn ich dies in der Syntax von SWAT tun würde, eine Open-Source-Web-Automatisierungstestbibliothek in der Lage ist http://ulti-swat.wikispaces.com, Die Syntax wäre wie folgt:

| AssertElementExists | Ausdruck | Name = q; Parentelement.Parentelement.Parentelement.Parentelement.Parentelement.Name = f | Eingabe |

Ich habe gerade angefangen, XPath zu lernen und versuche zu verstehen, wie man Prädikate mit Achsen kombiniert. Ist es möglich, solche Ausdrücke mit XPath zu machen? Wenn ja, kann jemand wissen, dass Sie bitte helfen?

War es hilfreich?

Lösung

Sie könnten tun:

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

oder

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

Sie können diesen Desktop verwenden XPath Visualizer um Ihre XPath -Ausdrücke zu testen. EIN Grundlegender Tutorial finden Sie hier.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top