Selenium WebDriver Eğitiminde XPath: XPath Nasıl Bulunur?

İçindekiler:

Anonim

Selenium otomasyonunda, elemanlar id, sınıf, isim gibi genel konumlandırıcılar tarafından bulunmazsa, web sayfasında bir eleman bulmak için XPath kullanılır.

Bu eğitimde, nitelikleri yenilemede veya herhangi bir işlemde dinamik olarak değişen karmaşık veya dinamik öğeleri bulmak için xpath ve farklı XPath ifadeleri hakkında bilgi edineceğiz.

Bu XPath öğreticide şunları öğreneceksiniz:

  • XPath nedir?
  • X-yolu türleri
    • Mutlak XPath
    • Bağıl XPath
  • Temel XPath
  • İçerir ()
  • OR & AND kullanma
  • İşlevle başlar
  • Metin()
  • XPath eksen yöntemleri
    • Takip etme
    • Ata
    • Çocuk
    • Önceki
    • Aşağıdaki-kardeş
    • Ebeveyn
    • Kendisi
    • Azalan

Selenium'da XPath nedir?

Selenium'daki XPath , sayfanın HTML yapısında gezinmek için kullanılan bir XML yoludur. XML yol ifadesini kullanarak bir web sayfasındaki herhangi bir öğeyi bulmak için kullanılan bir sözdizimi veya dildir. XPath, HTML DOM yapısını kullanarak bir web sayfasındaki herhangi bir öğenin konumunu bulmak için hem HTML hem de XML belgeleri için kullanılabilir.

Selenyumdaki temel XPath formatı ekran görüntüsü ile aşağıda açıklanmıştır.

XPath'in Temel Biçimi

XPath selenyum için sözdizimi:

XPath, web sayfasında bulunan öğenin yolunu içerir. XPath oluşturmak için standart XPath sözdizimi.

Xpath = // tagname [@ attribute = 'değer']
  • //: Geçerli düğümü seçin.
  • Tagname: Belirli düğümün etiket adı.
  • @: Öznitelik seçin.
  • Öznitelik: Düğümün öznitelik adı.
  • Değer: Özelliğin değeri.

Öğeyi web sayfalarında doğru bir şekilde bulmak için farklı türde konumlayıcılar vardır:

XPath Bulucuları Web sayfasında farklı öğeler bulun
İD Öğeyi öğenin kimliğine göre bulmak için
Sınıf adı Elemanı, elemanın Sınıf adına göre bulmak için
İsim Soyisim Elemanı eleman adına göre bulmak için
bağlantı metni Öğeyi bağlantı metnine göre bulmak için
XPath Dinamik öğeyi bulmak ve web sayfasının çeşitli öğeleri arasında geçiş yapmak için gerekli XPath
CSS yolu CSS yolu, adı, sınıfı veya kimliği olmayan öğeleri de bulur.

X-yolu türleri

İki tür XPath vardır:

1) Mutlak XPath

2) Bağıl XPath

Mutlak XPath:

Öğeyi bulmanın doğrudan yolu budur, ancak mutlak XPath'in dezavantajı, öğenin yolunda herhangi bir değişiklik yapılırsa XPath'in başarısız olmasıdır.

XPath'in temel özelliği, tek eğik çizgi (/) ile başlamasıdır; bu, öğeyi kök düğümden seçebileceğiniz anlamına gelir.

Aşağıda, aşağıdaki ekranda gösterilen elemanın mutlak bir xpath ifadesi örneği bulunmaktadır.

NOT: Bu http://demo.guru99.com/test/selenium-xpath.html üzerinde aşağıdaki XPath alıştırmasını uygulayabilirsiniz.

Videoya erişilemiyorsa burayı tıklayın

Mutlak XPath:

/ html / body / div [2] / div [1] / div / h4 [1] / b / html [1] / body [1] / div [2] / div [1] / div [1] / h4 [1] / b [1]

Mutlak XPath

Göreli Xpath:

Göreli Xpath , HTML DOM yapısının ortasından başlar. Çift eğik çizgi (//) ile başlar. Web sayfasının herhangi bir yerinde öğeleri arayabilir, yani uzun bir xpath yazmaya gerek yoktur ve HTML DOM yapısının ortasından başlayabilirsiniz. Göreceli Xpath, kök öğeden tam bir yol olmadığı için her zaman tercih edilir.

Aşağıda, aşağıdaki ekranda gösterilen aynı elemanın göreceli bir XPath ifadesi örneği bulunmaktadır. Bu, XPath tarafından eleman bulmak için kullanılan yaygın biçimdir.

Videoya erişilemiyorsa burayı tıklayın

Göreli XPath: // div [@ class = 'feature-box cloumnsize1'] // h4 [1] // b [1]

Bağıl XPath

XPath eksenleri nelerdir.

XPath eksenleri, geçerli bağlam düğümünden XML belgesindeki farklı düğümleri arar. XPath Eksenleri, dinamik öğeleri bulmak için kullanılan yöntemlerdir, aksi takdirde kimliği, Sınıf adı, Adı vb. Olmayan normal XPath yöntemiyle mümkün değildir.

Eksen yöntemleri, yenilemede veya diğer işlemlerde dinamik olarak değişen öğeleri bulmak için kullanılır. Selenium Webdriver'da çocuk, ebeveyn, ata, kardeş, önceki, kendi vb. Gibi yaygın olarak kullanılan birkaç eksen yöntemi vardır.

Selenium'da XPath Handling karmaşık ve Dinamik öğeleri kullanma

1) Temel XPath:

XPath ifadesi , aşağıda gösterildiği gibi XML belgesinden ID, Name, Classname , vb. Gibi özniteliklere göre düğümleri veya düğüm listesini seçin .

Xpath = // girdi [@ isim = 'uid']

Http://demo.guru99.com/test/selenium-xpath.html sayfasına erişmek için bir bağlantı burada

Temel XPath

Bazı daha temel xpath ifadeleri:

Xpath = // girdi [@ tür = 'metin']Xpath = // etiket [@ id = 'mesaj23']Xpath = // girdi [@ değer = 'SIFIRLA']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']

2) İçerir ():

Contains (), XPath ifadesinde kullanılan bir yöntemdir. Herhangi bir özniteliğin değeri, örneğin oturum açma bilgileri dinamik olarak değiştiğinde kullanılır.

İçerme özelliği, aşağıdaki XPath örneğinde gösterildiği gibi kısmi metin içeren öğeyi bulma yeteneğine sahiptir.

Bu örnekte, özelliğin sadece kısmi metin değerini kullanarak öğeyi tanımlamaya çalıştık. Aşağıdaki XPath ifadesinde, gönder düğmesi yerine kısmi değer 'alt' kullanılmıştır. Elemanın başarıyla bulunduğu gözlemlenebilir.

"Tür" ün tam değeri "gönder", ancak yalnızca kısmi değer "alt" kullanıyor.

Xpath = // * [içerir (@ tür, 'alt')] 

"Ad" ın tam değeri "btnLogin" dir ancak yalnızca kısmi değer "btn" kullanılıyor.

Xpath = // * [içerir (@ ad, 'btn')]

Yukarıdaki ifadede, aşağıdaki ekran görüntüsünde gösterildiği gibi, öznitelik olarak 'ad'ı ve kısmi bir değer olarak' btn'yi aldık. Bu, 'ad' özniteliği 'btn' ile başladığından 2 öğe (GİRİŞ VE SIFIRLA) bulacaktır.

Benzer şekilde, aşağıdaki ifadede, bir öznitelik olarak 'id' ve bir kısmi değer olarak 'mesaj' aldık. Bu, "ad" özelliği "mesaj" ile başladığından 2 öğe bulacaktır ("Kullanıcı Kimliği boş olmamalıdır" ve "Parola boş olmamalıdır").

Xpath = // * [içerir (@ id, 'mesaj')] 

Aşağıdaki ifadede, bağlantının "metnini" bir öznitelik olarak ve "burayı" aşağıdaki ekran görüntüsünde gösterildiği gibi kısmi bir değer olarak aldık. Bu, 'burada' metni görüntülediği için bağlantıyı ('burada') bulacaktır.

Xpath = // * [içerir (metin (), 'burada')]Xpath = // * [içerir (@ href, 'guru99.com')] 

3) OR & AND kullanımı:

VEYA ifadesinde, 1. koşul VEYA 2. koşulun doğru olması gerekip gerekmediği şeklinde iki koşul kullanılır. Ayrıca herhangi bir koşulun doğru olması veya her ikisinin birden olması durumunda da geçerlidir. Öğeyi bulmak için herhangi bir koşulun doğru olması gerektiği anlamına gelir.

Aşağıdaki XPath ifadesinde, tek veya her iki koşulu da doğru olan öğeleri tanımlar.

Xpath = // * [@ type = 'submit' veya @ name = 'btnReset']

Her iki öğeyi de "type" özniteliğine sahip "LOGIN" öğesi ve "name" özniteliğine sahip "RESET" öğesi olarak vurgulamak.

VE ifadesinde, iki koşul kullanılır, öğeyi bulmak için her iki koşul da doğru olmalıdır. Herhangi bir koşulun yanlış olması durumunda elemanı bulamaz.

Xpath = // input [@ type = 'submit' ve @ name = 'btnLogin']

Aşağıdaki ifadede, hem 'tür' hem de 'ad' niteliğine sahip olduğu için 'LOGIN' öğesinin vurgulanması.

4) Xpath Başlıyor

XPath start-with () , öznitelik değeri yenilemede veya web sayfasındaki diğer dinamik işlemlerle değiştirilen web öğesini bulmak için kullanılan bir işlevdir. Bu yöntemde, öznitelik değeri dinamik olarak değişen öğeyi bulmak için özniteliğin başlangıç ​​metni eşleştirilir. Öznitelik değeri statik olan (değişmeyen) öğeler de bulabilirsiniz.

Örneğin -: Belirli bir elemanın kimliğinin aşağıdaki gibi dinamik olarak değiştiğini varsayalım:

Id = "mesaj12"

Id = "message345"

Id = "message8769"

vb… ama ilk metin aynı. Bu durumda, Start-with ifadesini kullanıyoruz.

Aşağıdaki ifadede, "mesaj" ile başlayan kimliği olan iki öğe vardır (yani, "Kullanıcı Kimliği boş olmamalıdır" ve "Parola boş olmamalıdır"). Aşağıdaki örnekte, XPath, 'Kimliği' 'mesaj' ile başlayan öğeleri bulur.

Xpath = // etiket [ile başlar (@ id, 'mesaj')]

5) XPath Metni () İşlevi

XPath metin () işlevi, bir web elemanın metnine göre elemanları bulmak için kullanılır selenyum webdriver arasında yerleşik bir fonksiyonudur. Tam metin öğelerini bulmaya yardımcı olur ve metin düğümleri kümesi içindeki öğeleri bulur. Yerleştirilecek elemanlar string şeklinde olmalıdır.

Bu ifadede, metin işlevi ile, aşağıda gösterildiği gibi tam metin eşleşmeli elemanı buluruz. Bizim durumumuzda, "UserID" metnine sahip öğeyi buluruz.

Xpath = // td [text () = 'Kullanıcı Kimliği'] 

6) XPath eksen yöntemleri:

Bu XPath eksen yöntemleri, karmaşık veya dinamik öğeleri bulmak için kullanılır. Aşağıda bu yöntemlerden bazılarını göreceğiz.

Bu XPath eksenleri yöntemini göstermek için Guru99 banka demo sitesini kullanacağız.

a) Aşağıdaki:

Geçerli düğüm () [Kullanıcı Kimliği giriş kutusu geçerli düğümdür] belgesindeki tüm öğeleri aşağıdaki ekranda gösterildiği gibi seçer.

Xpath = // * [@ type = 'text'] // aşağıdaki :: input

"Takip et" eksen şifresi, oturum açma ve sıfırlama düğmesi kullanılarak eşleşen 3 "giriş" düğümü vardır. Herhangi bir öğeye odaklanmak istiyorsanız, aşağıdaki XPath yöntemini kullanabilirsiniz:

Xpath = // * [@ type = 'text'] // aşağıdaki :: input [1]

XPath'i gereksinime göre [1], [2] koyarak değiştirebilirsiniz.

… ve bunun gibi.

Giriş '1' olduğunda, aşağıdaki ekran görüntüsü, 'Şifre' giriş kutusu öğesi olan belirli düğümü bulur.

b) Ata:

Üst öğe ekseni, aşağıdaki ekranda gösterildiği gibi geçerli düğümün tüm üst öğelerini (büyükbaba, üst, vb.) Seçer.

Aşağıdaki ifadede, mevcut düğümün ("ENTERPRISE TESTING" düğümü) üst öğelerini buluyoruz.

Xpath = // * [text () = 'Kurumsal Test'] // ata :: div

"Ancestor" ekseni kullanılarak eşleşen 13 "div" düğümü vardır. Herhangi bir öğeye odaklanmak istiyorsanız, ihtiyacınıza göre 1, 2 sayısını değiştirebileceğiniz aşağıdaki XPath'ı kullanabilirsiniz:

Xpath = // * [text () = 'Kurumsal Test'] // ata :: div [1]

XPath'i gereksinime göre [1], [2] koyarak değiştirebilirsiniz.

… ve bunun gibi.

c) Çocuk:

Aşağıdaki ekranda gösterildiği gibi mevcut düğümün (Java) tüm alt öğelerini seçer.

Xpath = // * [@ id = 'java_technologies'] // child :: li

"Alt" eksen kullanılarak eşleşen 71 "li" düğüm vardır. Herhangi bir öğeye odaklanmak istiyorsanız, aşağıdaki xpath'i kullanabilirsiniz:

Xpath = // * [@ id = 'java_technologies'] // child :: li [1]

Xpath'i gereksinime göre [1], [2] koyarak değiştirebilirsiniz.

… ve bunun gibi.

d) Önceki:

Aşağıdaki ekranda gösterildiği gibi mevcut düğümden önce gelen tüm düğümleri seçin.

Aşağıdaki ifadede, Userid ve şifre giriş elemanı olan "LOGIN" butonundan önceki tüm giriş elemanlarını tanımlar .

Xpath = // * [@ type = 'submit'] // preceding :: input

"Önceki" eksen kullanılarak eşleşen 2 "giriş" düğümü vardır. Herhangi bir öğeye odaklanmak istiyorsanız, aşağıdaki XPath'i kullanabilirsiniz:

Xpath = // * [@ type = 'submit'] // preceding :: input [1]

Xpath'i gereksinime göre [1], [2] koyarak değiştirebilirsiniz.

… ve bunun gibi.

e) Aşağıdaki kardeş:

Bağlam düğümünün aşağıdaki kardeşlerini seçin. Kardeşler, aşağıdaki ekranda gösterildiği gibi mevcut düğümün aynı seviyesindedir. Geçerli düğümden sonra elemanı bulacaktır.

 xpath = // * [@ type = 'submit'] // following-sibling :: input

"Aşağıdaki kardeş" eksenini kullanarak eşleşen bir giriş düğümü.

f) Ebeveyn:

Aşağıdaki ekranda gösterildiği gibi mevcut düğümün üst öğesini seçer.

Xpath = // * [@ id = 'rt-feature'] // parent :: div

"Ana" eksen kullanılarak eşleşen 65 "div" düğümü vardır. Herhangi bir öğeye odaklanmak istiyorsanız, aşağıdaki XPath'i kullanabilirsiniz:

Xpath = // * [@ id = 'rt-feature'] // parent :: div [1]

XPath'i gereksinime göre [1], [2] koyarak değiştirebilirsiniz.

… ve bunun gibi.

g) Kendisi:

Geçerli düğümü seçer veya 'self', aşağıdaki ekranda gösterildiği gibi düğümün kendisini gösterdiği anlamına gelir.

"Self" ekseni kullanılarak bir düğüm eşleştirme. Kendini temsil ettiği için her zaman yalnızca bir düğüm bulur.

Xpath = // * [@ type = 'password'] // self :: input

h) Torun:

Aşağıdaki ekranda gösterildiği gibi mevcut düğümün soyundan gelenleri seçer.

Aşağıdaki ifadede, düğüm altında (alt düğüm, torun düğümü vb.) Aşağı anlamına gelen geçerli öğeye ('Ana gövde çevresi' çerçeve öğesi) tüm öğenin alt öğelerini tanımlar.

Xpath = // * [@ id = 'rt-feature'] // soyundan :: a

"Alt" eksen kullanılarak eşleşen 12 "bağlantı" düğümü vardır. Herhangi bir öğeye odaklanmak istiyorsanız, aşağıdaki XPath'i kullanabilirsiniz:

Xpath = // * [@ id = 'rt-feature'] // soyundan :: a [1]

XPath'i gereksinime göre [1], [2] koyarak değiştirebilirsiniz.

… ve bunun gibi.

Özet:

XPath, belirli bir öğe üzerinde bir işlem yapmak için web sayfasında bir öğe bulmak için gereklidir.

  • İki tür selenyum XPath vardır:
    • Mutlak XPath
    • Bağıl XPath
  • XPath Eksenleri, normal XPath yöntemiyle bulunması mümkün olmayan dinamik öğeleri bulmak için kullanılan yöntemlerdir.
  • XPath ifadesi, XML belgesindeki ID, Name, Classname, vb. Gibi özniteliklere göre düğümleri veya düğüm listesini seçer.