{"id":714,"date":"2023-12-01T12:41:22","date_gmt":"2023-12-01T11:41:22","guid":{"rendered":"https:\/\/ittester.sk\/automatisiertes-testen\/xpath-tutorial-in-selenium-und-anderen-automatisierten-tools\/"},"modified":"2024-06-05T12:11:40","modified_gmt":"2024-06-05T10:11:40","slug":"tutorial-xpath-in-selenium-und-andere-automatisierte-tools","status":"publish","type":"post","link":"https:\/\/ittester.sk\/de\/automatisiertes-testen\/selenium-tutorial-de\/tutorial-xpath-in-selenium-und-andere-automatisierte-tools\/","title":{"rendered":"XPath-Tutorial in Selenium und anderen automatisierten Tools"},"content":{"rendered":"\n<p>In diesem xPath-Tutorial werden wir die Verwendung des XPath-Locators in Selenium WebDriver und anderen automatisierten Tools behandeln. In unserem Beitrag \u00fcber die Suche nach WebElementen in Selenium haben wir die verschiedenen Arten von Locators untersucht, die in Selenium WebDriver verwendet werden.<\/p>\n\n<p>Hier werden wir lernen, wie man Xpath-Locators erstellt, die verschiedenen Arten von Xpath, und wie man mit XPath nach dynamischen Elementen sucht.<\/p>\n\n<h2 class=\"wp-block-heading\"><strong>Inhalts\u00fcbersicht<\/strong><\/h2>\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-co-je-to-xpath\">\u010co je to XPath?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-ake-su-rozne-typy-xpath\">Ak\u00e9 s\u00fa r\u00f4zne typy XPath?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-vyhladavanie-dynamickych-prvkov-pomocou-xpaths\">Vyh\u013ead\u00e1vanie dynamick\u00fdch prvkov pomocou XPaths<\/a><\/li><\/ul><\/div>\n<h2 class=\"wp-block-heading\" id=\"aioseo-co-je-to-xpath\">Was ist XPath?<\/h2>\n\n<p>XPath kann als eine Abfragesprache definiert werden, mit der man in XML-Dokumenten navigieren kann, um verschiedene Elemente zu finden. Die grundlegende Syntax des XPath-Ausdrucks lautet.<\/p>\n\n<p><strong>\/\/tag[@attributeName=&#8217;attributeValues&#8216;]<\/strong><\/p>\n\n<p>Lassen Sie uns nun ein Beispiel verwenden, um die verschiedenen Elemente der Xpath-Ausdrucksyntax zu verstehen &#8211; Tags, Attribute und Attributwerte. Betrachten Sie das folgende Bild einer Google-Webseite mit Firebug, das das Suchleisten-Div kontrolliert.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"497\" src=\"https:\/\/ittester.sk\/wp-content\/uploads\/2023\/11\/x-path-1030-500-1024x497.webp\" alt=\"Screenshot der Syntax des XPath-Ausdrucks\" class=\"wp-image-703\" srcset=\"https:\/\/ittester.sk\/wp-content\/uploads\/2023\/11\/x-path-1030-500-1024x497.webp 1024w, https:\/\/ittester.sk\/wp-content\/uploads\/2023\/11\/x-path-1030-500-300x146.webp 300w, https:\/\/ittester.sk\/wp-content\/uploads\/2023\/11\/x-path-1030-500-768x373.webp 768w, https:\/\/ittester.sk\/wp-content\/uploads\/2023\/11\/x-path-1030-500.webp 1030w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Die Syntax des XPath-Ausdrucks ist sehr hilfreich bei der Erstellung anderer XPath-Ausdr\u00fccke.  <\/figcaption><\/figure>\n<\/div>\n<ul class=\"wp-block-list\">\n<li><strong>&#8218;\/&#8216; oder &#8218;\/\/&#8216;<\/strong> &#8211; Einfacher Schr\u00e4gstrich und doppelter Schr\u00e4gstrich werden verwendet, um absolute und relative XPath-Pfade zu erstellen (wird sp\u00e4ter in diesem Lehrgang erkl\u00e4rt). Ein einzelner Schr\u00e4gstrich wird verwendet, um die Auswahl vom Wurzelknoten aus zu starten. Der doppelte Schr\u00e4gstrich wird verwendet, um den aktuellen, der Auswahl entsprechenden Knoten abzurufen. F\u00fcr den Moment werden wir hier &#8218;\/\/&#8216; verwenden.<\/li>\n\n\n\n<li><strong>Tag <\/strong>&#8211; HTML-Tags beginnen mit &#8218;&lt;&#8218; und enden mit &#8218;&gt;&#8216;. Sie werden verwendet, um verschiedene Elemente zu umschlie\u00dfen und Informationen \u00fcber die Verarbeitung der Elemente zu liefern. In der obigen Abbildung sind die Tags &#8222;div&#8220; und &#8222;input&#8220; zu sehen.<\/li>\n\n\n\n<li><strong>Attribute<\/strong> &#8211; Attribute definieren die Eigenschaften, die HTML-Elemente haben. In der obigen Abbildung sind die Attribute des \u00e4u\u00dferen Elements div id, classes und dir.<\/li>\n\n\n\n<li><strong>AttributeValue<\/strong> &#8211; Attributwerte sind, wie der Name schon sagt, Attributwerte, z. B. &#8222;sb_ifc0&#8220; ist der Wert des Attributs &#8222;id&#8220;.<\/li>\n<\/ul>\n\n<p>Mit der oben gezeigten XPath-Syntax k\u00f6nnen wir mehrere XPath-Ausdr\u00fccke f\u00fcr das in der Abbildung gezeigte Google searchbar-div erstellen, z. B. \/\/div[@id=&#8217;sb_ifc0\u2032], \/\/div[@class=&#8217;sbib_b&#8216;] oder \/\/div[@dir=&#8217;ltr&#8216;]. Jeder dieser Ausdr\u00fccke kann verwendet werden, um das gew\u00fcnschte Element abzurufen, solange die ausgew\u00e4hlten Attribute eindeutig sind.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-ake-su-rozne-typy-xpath\">Was sind die verschiedenen Arten von XPath?<\/h2>\n\n<p>Es gibt zwei Arten von XPath-Ausdr\u00fccken:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Absoluter XPath<\/strong> &#8211; XPath-Ausdr\u00fccke, die mit absoluten XPath-Ausdr\u00fccken erstellt werden, beginnen die Auswahl beim Wurzelknoten. Diese Ausdr\u00fccke beginnen entweder mit einem &#8222;\/&#8220;-Zeichen oder einem Wurzelknoten und durchlaufen das gesamte DOM, um das Element zu finden.<\/li>\n\n\n\n<li><strong>Relativer XPath<\/strong> &#8211; Relative XPath-Ausdr\u00fccke sind viel kompakter und verwenden f\u00fchrende doppelte Schr\u00e4gstriche &#8218;\/\/&#8216;. Diese XPath-Ausdr\u00fccke k\u00f6nnen Elemente an jeder Stelle ausw\u00e4hlen, die den Auswahlkriterien entspricht und nicht unbedingt mit dem Wurzelknoten beginnt.<\/li>\n<\/ul>\n\n<p>Welcher dieser beiden Ausdr\u00fccke ist also besser?&#8220; &#8211; Relative XPath-Ausdr\u00fccke werden als besser angesehen, weil sie einfacher zu lesen und zu erstellen sind und au\u00dferdem robuster sind. Das Problem bei absoluten XPath-Pfaden ist, dass selbst eine kleine \u00c4nderung im DOM vom Pfad des Wurzelknotens zum gew\u00fcnschten Element den XPath-Pfad ung\u00fcltig machen kann.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-vyhladavanie-dynamickych-prvkov-pomocou-xpaths\">Suche nach dynamischen Elementen mit XPaths<\/h2>\n\n<p>In der Automatisierung haben wir oft entweder keine eindeutigen Attribute von Elementen, die sie eindeutig identifizieren, oder die Elemente werden dynamisch erzeugt, wobei der Wert des Attributs nicht im Voraus bekannt ist.<\/p>\n\n<p>F\u00fcr solche F\u00e4lle bietet XPath verschiedene Methoden f\u00fcr die Suche nach Elementen, z. B. durch Verwendung des Textes, der \u00fcber den Elementen steht, durch Verwendung des Index des Elements, durch Verwendung eines teilweise \u00fcbereinstimmenden Attributwerts, durch Verschieben zu einem Geschwister-, Kind- oder Elternteil des Elements, das eindeutig identifiziert werden kann, und so weiter.<\/p>\n\n<p><strong>Verwendung der Funktion text()<\/strong><\/p>\n\n<p>Mit der Funktion text() k\u00f6nnen wir ein Element anhand des dar\u00fcber geschriebenen Textes finden, z. B. XPath f\u00fcr die Schaltfl\u00e4che &#8222;GoogleSearch&#8220;:<\/p>\n\n<p><strong>\/\/*[text()=&#8217;Google Search&#8216;]<\/strong> (hier haben wir &#8218;*&#8216; verwendet, um jedes Tag mit dem gew\u00fcnschten Text abzugleichen)<\/p>\n\n<p><strong>Verwendung der Funktion contains()<\/strong><\/p>\n\n<p>Mit der Funktion contains() k\u00f6nnen wir auch die Werte von teilweise identischen Attributen vergleichen. Dies ist besonders n\u00fctzlich bei der Suche nach dynamischen Werten, von denen ein Teil konstant bleibt, z. B. Der XPath f\u00fcr das \u00e4u\u00dfere Div im obigen Bild mit der ID &#8222;sb_ifc0&#8220; kann auch mit der partiellen ID &#8222;sb&#8220; unter Verwendung von contains() gefunden werden &#8211; <strong>\/\/div[contains(@id,&#8217;sb&#8216;)]<\/strong><\/p>\n\n<p><strong>Verwendung des Elementindexes<\/strong><\/p>\n\n<p>Durch Angabe der Indexposition in eckigen Klammern k\u00f6nnen wir zum n-ten Element gehen, das die Bedingung erf\u00fcllt, z. B. <strong>\/\/div[@id=&#8217;elementid&#8216;]\/input[4]<\/strong> ruft das vierte Eingabeelement innerhalb des div-Elements ab.<\/p>\n\n<p><strong>XPath-Achsen verwenden<\/strong><\/p>\n\n<p>XPath-Achsen helfen bei der Lokalisierung komplexer Webelemente, indem sie \u00fcber ein Geschwister-, Nachkommen- oder \u00fcbergeordnetes Element von anderen Elementen, die leicht identifiziert werden k\u00f6nnen, geleitet werden. Einige der am h\u00e4ufigsten verwendeten Achsen sind:<\/p>\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><strong>Kind<\/strong><\/td><td><strong>Auswahl von Unterknoten des Referenzknotens.<\/strong><strong><br\/><\/strong><strong>Syntax &#8211; XpathForReferenceNode\/child::tag<\/strong><\/td><\/tr><tr><td><strong>Elternteil<\/strong><\/td><td>Auswahl des \u00fcbergeordneten Knotens des Referenzknotens.<br\/>Syntax &#8211; XpathForReferenceNode\/parent::tag<\/td><\/tr><tr><td><strong>unter<\/strong><\/td><td>Markieren Sie alle Knoten, die auf den Referenzknoten folgen.<br\/>Syntax &#8211; XpathForReferenceNode\/following::tag<\/td><\/tr><tr><td><strong>vorhergehende<\/strong><\/td><td>Markieren Sie alle Knoten, die vor dem Referenzknoten liegen.<br\/>Syntax &#8211; XpathForReferenceNode\/preceding::tag<\/td><\/tr><tr><td><strong>Vorfahren<\/strong><\/td><td>Auswahl aller Vorg\u00e4ngerelemente vor dem Referenzknoten.<br\/>Syntax &#8211; XpathForReferenceNode\/ancestor::tag<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>XPath kann als eine Abfragesprache definiert werden, mit der man in XML-Dokumenten navigieren kann, um verschiedene Elemente zu finden.<\/p>\n","protected":false},"author":8,"featured_media":1502,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[16],"tags":[],"class_list":["post-714","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-selenium-tutorial-de"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/714","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/comments?post=714"}],"version-history":[{"count":2,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/714\/revisions"}],"predecessor-version":[{"id":1504,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/posts\/714\/revisions\/1504"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/media\/1502"}],"wp:attachment":[{"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/media?parent=714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/categories?post=714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ittester.sk\/de\/wp-json\/wp\/v2\/tags?post=714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}