Az XPath elsajátítása szelénben: Hogyan keressünk elemeket

A tesztmérnökök nélkülözhetetlenek a szoftverfejlesztési életciklusban, mivel biztosítják, hogy a csapat hibamentes és működő alkalmazásokat biztosítson. Ezek a mérnökök különböző teszteken veszik át az alkalmazásokat, mielőtt azokat kiszállítanák vagy a felhasználók számára késznek nyilvánítanák.

A tesztelőknek jártasnak kell lenniük, és képesnek kell lenniük megtalálni a webes elemeket, és kommunikálni velük. A szelén a modern fejlesztőcsapatok egyik leggyakrabban használt tesztautomatizálási eszköze. Ennek az eszköznek négy összetevője van; Selenium Grid, Selenium WebDriver, Selenium IDE és Selenium RC.

Ma a Selenium WebDriverre összpontosítunk, mivel az XPath-ot tartalmaz. Ez a cikk meghatározza az XPath-ot, megvitatja az alapvető XPath szintaxist, és bemutatja, hogyan kell XPath-ot használni a Seleniumban.

Mi az XPath

Az XPath (XML Path Language) egy lekérdezési nyelv az XML dokumentumok attribútumainak és elemeinek kiválasztására és navigálására. Az XPath egy elérési út-kifejezést definiál, lehetőséget kínálva az XML-dokumentum meghatározott részeinek megszólítására és az információk lekérésére.

Szintaxisa a fájlrendszer elérési útjára hasonlít. Olyan funkciókat és szimbólumokat is tartalmaz, amelyek megkönnyítik az elemek attribútumuk és hierarchiája alapján történő kiválasztását. Az XPath olyan technológiákkal használható, mint az XML, HTML és XSLT adatok kinyerésére és kezelésére.

Miért érdemes XPath-ot használni?

  • Rugalmas: Ellentétben a CSS-szelektorokkal, amelyek csak címkenév, azonosító vagy osztály használatával tudnak elemeket megkeresni, az XPath lehetővé teszi az elemek más attribútumok használatával történő megtalálását.
  • Újrafelhasználható: Az XPath-ot változókban tárolhatja, és újra felhasználhatja a kódjában.
  • Pontos csomópontkiválasztás: Az XPath szabványos módot biztosít a webdokumentum egyes elemeinek megcélzására.

Az XPath alapszintaxisa

Az XPath lehetővé teszi a weboldal bármely elemének megtalálását a DOM használatával. Mielőtt azonban ellenőriznénk a szintaxist, meg kell értenünk a következő XPath kifejezéseket;

  A Bro biztonsági csomag telepítése az Ubuntu kiszolgálóra

KifejezésLeíráscsomópontnév/ címkenév Az összes csomópontot kiválasztja a következő néven: ‘csomópontnév’/ ‘címkenév’/Kiválaszt a gyökércsomópontból// Az aktuális dokumentumban lévő csomópontokat választja ki a kijelölésnek megfelelő aktuális csomópontból, függetlenül attól, hogy hol vannak @ Kiválasztja az attribútumokat.. Kiválasztja a szülőt az aktuális csomópont.Az aktuális csomópontot választja ki

Az XPath szabványos szintaxisa:

XPath=//tagname[@attribute="value"]

Mint látható, a szintaxis dupla perjellel (//) kezdődik, amely a címke/csomópontnév által meghatározott aktuális csomóponttal kezdődik.

Abszolút XPath vs. relatív XPath

Két út áll előttünk az XPath kezelésében; Abszolút XPath és relatív XPath;

Abszolút XPath

Az abszolút XPath egy közvetlen út a gyökértől a kívánt elemhez. A gyökércsomóponttal kezdődik és a célcsomóponttal fejeződik be.

A következő tartalommal rendelkezhet egy HTML-dokumentum;

<!DOCTYPE html>
<html>
<head>
    <title>etoppc.com</title>
</head>
<body>
    <div>
        <h1>Welcome to etoppc.com</h1>
    </div>
</body>
</html>

Ha meg akarjuk találni a „Welcome to etoppc.com” tartalmú elemet, akkor ezt az utat fogja követni;

/html/body/div/h1

A fenti dokumentumban szerepel;

  • A html gyökércsomópontként: /html
  • A törzs egy szülőcsomópont: /html/body
  • A div a törzscsomópont gyermekeként: /html/body/div
  • A h1 a div csomópont gyermekeként: /html/body/div/h1

A legbelső elem eléréséhez ezt az utat kell követned.

Mikor kell használni az Absolute XPath-ot?

Az Absolute XPath egy „specifikus” utat követ. Így tökéletesen illeszkedik, ha több, hasonló attribútumú elemet tartalmaz egy oldalon, így biztosítva, hogy pontosan a dokumentum elemeit célozza meg.

Az XPath azonban túlságosan érzékeny a HTML-dokumentum szerkezetének változásaira. Mint ilyen, egy egyszerű változtatás megtörheti az Absolute XPath-ot.

Relatív XPath

A relatív XPath bármely csomóponttól kezdődik, és a célcsomóponttal végződik. Ezt az útvonalat nem érintik a dokumentum módosításai, ezért a legtöbb esetben előnyösebb. A Relatív XPath segítségével a dokumentum bármely részéből megkereshet elemeket. A Relatív XPath kifejezés dupla perjelekkel kezdődik „//”.

Ha a HTML-dokumentumot használjuk, meg tudjuk találni a H1-et, amelyen ez áll: „Üdvözöljük a etoppc.com-ben”;

<!DOCTYPE html>
<html>
<head>
    <title>etoppc.com</title>
</head>
<body>
    <div>
        <h1>Welcome to etoppc.com</h1>
    </div>
</body>
</html>

A h1 relatív XPath-ja a következő lesz;

//body/div/h1

Mikor kell használni a Relative XPath-ot?

A relatív XPath-ot kell használnia, ha egyensúlyt keres a rugalmasság és a specifikusság között. Ez az útvonal rugalmas a HTML-dokumentum változásaival szemben, mivel az elemek közötti kapcsolat specifikus marad.

Keresse meg az elemeket az XPath segítségével a Seleniumban

A Selenium egy nyílt forráskódú keretrendszer, amely lehetővé teszi a felhasználók számára a webböngészők automatizálását. A keretrendszer olyan könyvtárakat és eszközöket tartalmaz, amelyek segítségével a tesztelők automatikusan és szisztematikusan interakcióba léphetnek a webes elemekkel.

  A Google Meet letöltése

Feltéve, hogy van egy webdokumentumunk, amely a dalok listáját tartalmazza az alábbiak szerint;

<!DOCTYPE html>
<html>
<head>
    <title>Song Library</title>
</head>
<body>
    <h1>Song Library</h1>
    <ul class="song-list">
        <li class="song" title="Song Title 1">Song 1 - Artist 1</li>
        <li class="song" title="Song Title 2">Song 2 - Artist 2</li>
        <li class="song" title="Song Title 3">Song 3 - Artist 1</li>
        <li class="song" title="Song Title 4">Song 4 - Artist 3</li>
    </ul>
</body>
</html>
  • A gyökércsomópontunk a .
  • Szülőcsomópontunk a .
  • A

    a gyermeke.

    • a gyermekeként.
    • Nekünk
    • van
        gyermekeként.

      A fenti HTML dokumentumban különböző XPath lokátorokat használhatunk. Megkereshetjük például az elemeket azonosító, név, osztálynév, tartalmak, szövegek, ezzel végződő és azzal kezdődő elemek alapján, sok más helymeghatározó mellett. A Seleniumot különböző programozási nyelvekkel használhatja. Pythont használunk a demonstrációhoz.

      Keresse meg index alapján

      Feltételezve, hogy meg akarjuk találni a 3. számot, megkaphatjuk ezt a kódot;

      third_song = driver.find_element_by_xpath("//li[@class="song"][3]")
      print("Third Song:", third_song.text)
      

      Relatív XPath-ot használtunk, és az „li” csomóponttal kezdjük. Amikor a Selenium megtalálja a harmadik dalt a listánkon, kinyomtatja a szövegét.

      Keresse meg attribútum alapján

      Lehet egy XPathunk, amely megkeresi az „Artist 1” összes dalát, és kinyomtatja a címüket. Kódunk a következő lehet;

      songs_by_artist1 = driver.find_elements_by_xpath("//li[contains(@class, 'song') and contains(text(), 'Artist 1')]")
      print("Songs by Artist 1:")
      for song in songs_by_artist1:
          print(song.text)
      

      Keresse meg szöveggel

      Ez a lokátor segít megtalálni az adott szöveget tartalmazó elemeket. Megkereshetünk egy „Song 4” szövegű dalt, és kinyomtathatjuk a szövegét. Ezt a helymeghatározót ezzel a kóddal tudjuk ábrázolni;

      song_with_text = driver.find_element_by_xpath("//li[contains(text(), 'Song 4')]")
      print("Song with Text:", song_with_text.text)
      

      XPath tengelyek

      Az általunk eddig tárgyalt megközelítések tökéletesen működnek egyszerű weboldalakkal. Vannak azonban olyan esetek, amikor az XPath elemkeresési módszerek, például a szöveg, az azonosító, az osztálynév és a név alapján, nem működnek.

      Az XPath tengelyeket olyan dinamikus tartalmakhoz használják, ahol a normál lokátorok nem működnek. Itt az elemeket más elemekkel való kapcsolatuk alapján találja meg. Ez néhány a gyakori XPath Axes lokátorok közül;

      Ős

      Az Ancestor Axis metódus tökéletes az erősen beágyazott elemeket tartalmazó XML dokumentumok kezelésére. Kijelölheti az összes őselemet, például az aktuális csomópont nagyszülőjét és szülőjét a legközelebbitől a legtávolabbiig.

      A következő kóddal rendelkezhetünk;

      <bookstore>
        <book>
          <title>The Great Gatsby</title>
          <author>F. Scott Fitzgerald</author>
          <genre>Fiction</genre>
        </book>
        <book>
          <title>The Biggest Dilemma</title>
          <author>George Orwell</author>
          <genre>Dystopian</genre>
        </book>
      </bookstore>
      

      Ha ki akarjuk jelölni a ‘cím’ elem összes ősét a „The Biggest Dilemma” könyvhöz, akkor használhatjuk ezt az Őstengely módszert;

      //title[text() = '1984']/ancestor::*

      Következő

      A Following Axis metódus megkeresi az összes csomópontot az aktuális csomópont záró címkéje után. Ez a módszer nem veszi figyelembe a célcsomópontok hierarchiáját vagy elhelyezkedését. Ha például több szakaszból álló XML-dokumentummal vagy weboldallal rendelkezik, akkor azonosíthat egy elemet, amely egy adott szakasz után jelenik meg anélkül, hogy a teljes fastruktúrában navigálna.

      Szülő

      Az XPath szülőtengely metódusa kiválasztja az aktuális csomópont szülőjét. A következő elérési utat használhatja a szülőcsomópont megkereséséhez;

      //tag[@attribute="value"]/parent::tagName

      Ez a megközelítés akkor működik, ha az aktuális csomópont gyermekelemei egyedi attribútumokkal rendelkeznek, amelyeket könnyen megtalálhat, és ellenőrizni szeretné a szülővel.

      Gyermek

      Az XPath Child Axis metódusa kijelöli az aktuális csomópont összes gyermekét. Ez továbbra is az egyik legnépszerűbb XPath Axis módszer, mivel segít kiválasztani egy adott elem gyermekcsomópontjait.

      Tekintsük ezt a kódrészletet;

      <section id='text'>
          <p>Paragraph one</p>
          <p>Paragraph two</p>
          <p>Paragraph three</p>
          <p>Paragraph four</p>
      </section>

      Ennek a tengelynek a segítségével megtalálhatjuk az összes ‘p’ elemet a kódunkban;

      //section[@id='text']/child::p

      GYIK

      Miért érdemes XPath-ot használni CSS-szelektorok helyett?

      A CSS-választók csak azonosítójuk, címkenévük és osztályuk alapján találhatnak elemeket. Másrészt az XPath segítségével megkeresheti az elemeket a helyük, a szövegtartalom és a HTML-struktúra egyéb attribútumai alapján. Az XPath kifejezéseket változókban is tárolhatja, és újra felhasználhatja az alkalmazásban.

      Mely nyelveket támogatja az XPath a Seleniumban?

      Az XPath bármely olyan nyelvvel használható, amely támogatja a Seleniumot. A szkripteket JavaScript, Java, Python, Ruby, C# és PHP nyelven írhatja.

      Mik az XPath alternatívái?

      Az XPath alternatívájaként használhat CSS-választókat, képfelismerést vagy a Selenium beépített helymeghatározóit. A CSS-választók a leggyakoribbak; az elemeket a címke neve, azonosítója vagy osztálya alapján találhatja meg. A képfelismerés lehetővé teszi az elemek helyének meghatározását a képek alapján. A Selenium beépített lokátorait úgy tervezték, hogy könnyen használhatóak legyenek.

      Következtetés

      Mostantól meghatározhatja az XPath-ot a Seleniumban, különbséget tehet az abszolút és a relatív XPath között, és különböző XPath lokátorok segítségével keresheti meg az elemeket. A helymeghatározó kiválasztása a tartalom jellegétől és az Ön végső céljaitól függ.

      Tekintse meg a Szelénnel kapcsolatos interjúkérdésekről szóló cikkünket, ha a következő interjút szeretné elérni.