XPath nasıl kullanılır Selenium? öğretici

XPath nedir? Selenium?

XPath girişi Selenium 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 bulmaya yönelik 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.

In Selenium otomasyon, eğer öğeler kimlik, sınıf, ad vb. genel konum belirleyiciler tarafından bulunamazsa, web sayfasında bir öğeyi bulmak için XPath kullanılır.

Bu eğitimde, yenileme veya herhangi bir işlem sırasında nitelikleri dinamik olarak değişen karmaşık veya dinamik elemanları bulmak için Xpath ve farklı XPath ifadelerini öğreneceğiz.

XPath Söz Dizimi

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

Xpath=//tagname[@attribute='value']

Selenium'daki XPath'ın temel formatı aşağıda ekran görüntüsü ile açıklanmaktadır.

XPath Söz Dizimi
XPath'ın Temel Formatı
  • // : Geçerli düğümü seçin.
  • Etiket adı: Belirli düğümün etiket adı.
  • @: Özellik seçin.
  • Özellik: Düğümün öznitelik adı.
  • Değer: Özelliğin değeri.

Öğeyi web sayfalarında doğru bir şekilde bulmak için farklı konum belirleyici türleri vardır:

XPath Bulucuları Web sayfasında farklı öğeleri bulun
ID Öğeyi öğenin kimliğine göre bulmak için
Sınıf adı Öğeyi, öğenin Sınıf adına göre bulmak için
İsim Öğeyi öğe 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 XPath gereklidir
CSS yolu CSS yolu ayrıca 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) Göreceli XPath

Mutlak XPath

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

XPath'ın temel özelliği, tek eğik çizgiyle (/) 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 öğenin mutlak Xpath ifadesinin örneği bulunmaktadır.

NOT: Aşağıdaki XPath alıştırmasını bu konuda uygulayabilirsiniz https://demo.guru99.com/test/selenium-xpath.html

Tıkla okuyun videoya erişilemiyorsa

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

Mutlak XPath

Göreceli Xpath

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

Aşağıda, aşağıdaki ekranda gösterilen aynı öğenin göreceli XPath ifadesinin örneği bulunmaktadır. Bu, XPath tarafından öğe bulmak için kullanılan yaygın formattır.

Tıkla okuyun videoya erişilemiyorsa

Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]

Göreli XPath

Göreli XPath

XPath eksenleri nelerdir?

XPath Eksenleri, geçerli bağlam düğümünden XML belgesindeki farklı düğümleri arar. XPath Eksenleri, normal XPath yöntemiyle ID, Sınıf Adı, Ad vb. olmadan mümkün olmayan dinamik elemanları bulmak için kullanılan yöntemlerdir. Selenium Çeşitli öznitelik ve koşullara göre dinamik elemanları tanımlamak ve yerleştirmek için Contains, AND, Absolute XPath ve Relative XPath gibi çeşitli yöntemler içerir.

Eksen yöntemleri, yenileme veya diğer işlemler sırasında dinamik olarak değişen öğeleri bulmak için kullanılır. Yaygın olarak kullanılan birkaç eksen yöntemi vardır. Selenium Web sürücüsü çocuk, ebeveyn, ata, kardeş, önceki, kendisi vb. gibi.

Dinamik XPath Nasıl Yazılır Selenium Web Sürücüsü

1) Temel XPath

XPath ifadesi, aşağıdaki niteliklere göre düğümleri veya düğüm listesini seçer: Kimlik, Ad, Sınıf Adı, vb. aşağıda gösterildiği gibi XML belgesinden.

Xpath=//input[@name='uid']

İşte sayfaya erişim için bir bağlantı https://demo.guru99.com/test/selenium-xpath.html

Temel XPath

Temel XPath

Bazı daha temel xpath ifadeleri:

Xpath=//input[@type='text']
Xpath=//label[@id='message23']
Xpath=//input[@value='RESET']
Xpath=//*[@class='barone']
Xpath=//a[@href='https://demo.guru99.com/']
Xpath=//img[@src='//guru99.com/images/home/java.png']

2) İçerir()

Container(), XPath ifadesinde kullanılan bir yöntemdir. Oturum açma bilgileri gibi herhangi bir özelliğin değeri 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 yalnızca 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 'sub' kullanılmıştır. Elemanın başarıyla bulunduğu gözlemlenebilir.

'Tür'ün tam değeri 'gönder'dir ancak yalnızca 'alt' kısmi değerini kullanır.

Xpath=//*[contains(@type,'sub')]

'name'nin tam değeri 'btnLogin'dir ancak yalnızca kısmi 'btn' değerini kullanır.

Xpath=//*[contains(@name,'btn')]

Yukarıdaki ifadede aşağıdaki ekran görüntüsünde görüldüğü gibi 'name' özelliğini nitelik, 'btn' değerini ise kısmi değer olarak aldık. Bu, 'name' özniteliği 'btn' ile başladığından 2 öğeyi (LOGIN & RESET) bulacaktır.

İçerir()

Benzer şekilde aşağıdaki ifadede 'id'yi nitelik, 'message'ı ise kısmi değer olarak aldık. Bu, 'id' özelliği 'message' ile başladığından 2 öğe bulacaktır ('Kullanıcı Kimliği boş olmamalıdır' ve 'Şifre boş olmamalıdır').

Xpath=//*[contains(@id,'message')]

İçerir()

Aşağıdaki ifadede, aşağıdaki ekran görüntüsünde gösterildiği gibi bağlantının “metin”ini nitelik olarak, “burayı” ise kısmi değer olarak aldık. Bu, 'burada' metnini görüntülerken bağlantıyı ("burada") bulacaktır.

Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]

İçerir()

3) VEYA ve VE'yi kullanma

OR ifadesinde, 1. koşulun VEYA 2. koşulun doğru olması şeklinde iki koşul kullanılır. Ayrıca herhangi bir koşulun veya her ikisinin birden doğru 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 koşulu veya her iki koşulu da doğru olan elemanları tanımlar.

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

Her iki öğenin de 'type' özniteliğine sahip “LOGIN” öğesi ve 'name' özniteliğine sahip “RESET” öğesi olarak vurgulanması.

VEYA & VE'yi kullanma

AND ifadesinde iki koşul kullanılır, öğeyi bulmak için her iki koşulun da doğru olması gerekir. Herhangi bir koşulun yanlış olması durumunda öğe bulunamaz.

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

Aşağıdaki ifadede, hem 'type' hem de 'name' özelliğine sahip olduğundan 'LOGIN' öğesi vurgulanıyor.

VEYA & VE'yi kullanma

4) Xpath İle Başlar

XPath () ile başlar öznitelik değeri yenileme sırasında veya web sayfasındaki diğer dinamik işlemlerle değişen web öğesini bulmak için kullanılan bir işlevdir. Bu yöntemde özniteliğin başlangıç ​​metni eşleştirilerek öznitelik değeri dinamik olarak değişen öğe bulunur. Ayrıca öznitelik değeri statik olan (değişmeyen) öğeleri de bulabilirsiniz.

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

Kimlik =” mesaj12″

Kimlik =” mesaj345″

Kimlik =” mesaj8769″

vb. ancak başlangıçtaki metin aynı. Bu durumda Start-with ifadesini kullanıyoruz.

Aşağıdaki ifadede, “mesaj” ile başlayan bir kimliğe sahip iki öğe bulunmaktadır (yani, 'Kullanıcı Kimliği boş olmamalıdır' ve 'Şifre boş olmamalıdır'). Aşağıdaki örnekte XPath, 'ID'si 'message' ile başlayan elemanı bulur.

Xpath=//label[starts-with(@id,'message')]

XPath şununla başlar:

5) XPath Metin() İşlevi

The XPath metni () işlevi Bir web öğesinin metnine dayalı olarak öğeleri bulmak için kullanılan Selenium web sürücüsünün yerleşik bir işlevidir. Tam metin öğelerinin bulunmasına yardımcı olur ve öğelerin metin düğümleri kümesi içindeki yerini belirler. Yerleştirilecek öğeler string biçiminde olmalıdır.

Bu ifadede text fonksiyonu ile aşağıda gösterildiği gibi tam metin eşleşmesi olan elemanı buluyoruz. Bizim durumumuzda “UserID” metnini içeren öğeyi buluyoruz.

Xpath=//td[text()='UserID']

XPath Metin() İşlevi

XPath eksen yöntemleri

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

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

1) Takip etmek

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

Xpath=//*[@type='text']//following::input

Takip etme

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

Xpath=//*[@type='text']//following::input[1]

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

Giriş '1' olarak yapıldığında, aşağıdaki ekran görüntüsü 'Şifre' giriş kutusu elemanı olan belirli düğümü bulur.

Takip etme

2) Ata

Ata ekseni, aşağıdaki ekranda gösterildiği gibi mevcut düğümün tüm ata öğelerini (büyük ebeveyn, ebeveyn vb.) seçer.

Aşağıdaki ifadede mevcut düğümün (“ENTERPRISE TESTING” düğümü) ata elemanlarını buluyoruz.

Xpath=//*[text()='Enterprise Testing']//ancestor::div

Ata

“Ata” eksenini kullanarak eşleşen 13 “div” düğümü vardır. Belirli bir öğeye odaklanmak istiyorsanız, gereksiniminize göre 1, 2 sayısını değiştirebileceğiniz aşağıdaki XPath'ı kullanabilirsiniz:

Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]

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

3) Çocuk

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

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

Çocuk

“Çocuk” eksenini kullanarak eşleşen 71 “li” düğüm vardır. Belirli bir öğeye odaklanmak istiyorsanız aşağıdaki xpath'ı kullanabilirsiniz:

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

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

4) Önceki

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

Aşağıdaki ifadede “LOGIN” butonundan önceki tüm giriş elemanlarını tanımlamaktadır. Kullanıcı kimliği ve şifre giriş elemanı.

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

önceki

“Önceki” ekseni kullanarak eşleşen 2 “giriş” düğümü vardır. Belirli bir öğeye odaklanmak istiyorsanız aşağıdaki XPath'ı kullanabilirsiniz:

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

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

5) Takip eden kardeş

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

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

Takip eden kardeş

“Following-sibling” eksenini kullanarak eşleşen bir giriş düğümü.

6) Ebeveyn

Aşağıdaki ekranda gösterildiği gibi geçerli düğümün ebeveynini seçer.

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

Ebeveyn

“Üst” eksenini kullanarak eşleşen 65 “div” düğümü vardır. Belirli bir öğeye odaklanmak istiyorsanız aşağıdaki XPath'ı kullanabilirsiniz:

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

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

7) Benlik

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

öz

“Kendi” eksenini kullanarak bir düğüm eşleştirmesi. Kendi öğesini temsil ettiğinden her zaman yalnızca bir düğüm bulur.

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

8) Torun

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

Aşağıdaki ifadede, mevcut öğenin ('Ana gövde surround' çerçeve öğesi) tüm alt öğelerini tanımlar; bu, düğümün aşağısı anlamına gelir (alt düğüm, torun düğüm, vb.).

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

Torun

"Alçalan" eksenini kullanarak eşleşen 12 "bağlantı" düğümü vardır. Belirli bir öğeye odaklanmak istiyorsanız aşağıdaki XPath'ı kullanabilirsiniz:

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

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

ÖZET

XPath'ın web sayfasında bir öğeyi bu belirli öğe üzerinde işlem yapmak için bulması gerekir.

  • İki tür selenyum XPath vardır:
    • Mutlak XPath
    • Göreli XPath
  • XPath Eksenleri, normal XPath yöntemiyle bulunması mümkün olmayan dinamik elemanları bulmak için kullanılan yöntemlerdir
  • XPath ifadesi, XML belgesindeki Kimlik, Ad, Sınıf Adı vb. gibi niteliklere dayalı olarak düğümleri veya düğüm listesini seçer.

Ayrıca Kontrol Edin: - Selenium Yeni Başlayanlar İçin Eğitim: 7 Günde WebDriver'ı Öğrenin