Xpath, XML ifadelerini kullanarak web sayfasındaki öğeleri bulmaya yardımcı olur.
Syntax: Xpath= //tagname[@attribute=’value’]
tagname= hedeflediğiniz elementin etiketi, örneğin bir giriş(input) etiketini veya bağlantı(anchor) etiketini, vb. belirtir.
attribute= ‘@’ ön eki ve karşılık gelen değerleri ile tanımlanır. Name, ID, Class vb. olabılır.
Xpath Seçicileri çeşitli biçimlerde bulunabilir:
- Standard Xpath
- Contains
- AND & OR
- Starts-with
- Text
1)Standard Xpath
Xpath’in standart syntax’ı ile kullanımıdır.
Bir element şöyle tanımlanmış olsun;
<input type=”email” name=”email” value=”” placeholder=”Email” required=”required” autofocus=”autofocus” class=”form-control mt-3 form-control-lg”>
İlgili xpath’iyle bulmak için;
driver.findElement(By.xpath(“//input[@name= ’email’]”))
Bu örnekte attribute olarak ‘name’ kullanılmıştır.
2)Contains
CSS Selector’deki Contains ile benzer çalışır. Herhangi bir element değeri dinamik ve kısmen değiştiğinde kullanılabilir.
Syntax: Xpath= //tagname[contains(@attribute, ‘partial value of attribute’)]
Element şu şekilde verilmiş olsun;
<input type=”text” placeholder=”Full Name*” name=”name” value=”” class=”form-control sign-up-input-2 “>
Contains kullanarak xpath’ini yazalım;
driver.findElement(By.xpath(“//input[contains(@class, ‘form-control’)]”))
3) AND ve OR Kullanımı ile Xpath
Bu yöntem, bir elementi iki koşul kümesi aracılığıyla bulmak istediğimizde kullanılır. “AND” durumunda her iki koşul da doğru olmalı ve “OR” için bu ikisinden biri doğru olmalıdır.
AND için syntax: Xpath=//input[@id=’value of id’ AND @name=’value of name’]
OR için syntax: Xpath=//input[@id=’value of id’ OR @name=’value of name’]
Yine aynı örneği kullanalım;
<input type=”email” name=”email” value=”” placeholder=”Email” required=”required” autofocus=”autofocus” class=”form-control mt-3 form-control-lg”>
Elementi ilgili xpath kullanımlarıyla bulmak için;
driver.findElement(By.xpath(“//input[@type=’email’ AND @name=’email’]))
driver.findElement(By.xpath(“//input[@type=’email’ OR @name=’email’]))
4) Starts-With
Kullanımı yine CSS Selector’deki ile benzer şekildedir.
Syntax: Xpath=//tagname[starts-with(@attribute,’starting name of the attribute value’)]
Elementimiz;
<input type=”password” placeholder=”Desired Password*” name=”password” class=”form-control sign-up-input-2 ” aria-autocomplete=”list”>
İlgili xpath kullanımıyla elementi bulmak için;
driver.findElement(By.xpath(“//input[starts-with(@name,’pass’)]”))
5) Ends-With
Kullanımı yine CSS Selector’deki ile benzer şekildedir.
Syntax: Xpath=//tagname[ends-with(@attribute,’ending name of the attribute value’)]
Elementimiz;
<input type=”password” placeholder=”Desired Password*” name=”password” class=”form-control sign-up-input-2 ” aria-autocomplete=”list”>
İlgili xpath kullanımıyla elementi bulmak için;
driver.findElement(By.xpath(“//input[ends-with(@name,’word’)]”))
6) Text
Metin eşleşmesini kullanarak elementi bulmak için kullanılan bir yöntemdir. Bazen elementler id, class gibi özelliklere sahip değilken sadece text barındırabilir. Bu elementleri bulmamız için text yöntemiyle xpathini yazmak bize yardımcı olmuş olur.
Syntax: Xpath=//div[text()=’value of text’]
Örnek elementimiz;
<p class=”signup-title”>SIGN UP</p>
İlgili xpath kullanımıyla elementimizi bulmak için;
driver.findElement(By.xpath(“//p[@text()=’ SIGN UP’]”))
Xpath’i devTools kullanmadan kendimiz yazabilmemiz için yöntemleri anlattım. Umarım faydalı olmuştur