Öğeleri Bağlantı Metnine ve Kısmi Bağlantı Metnine Göre Bulun Selenium

Bağlantı Metni Nedir? Selenium?

A Bağlantı Metni Selenium Bir web sayfasındaki köprüleri tanımlamak için kullanılır. Bir çapa etiketi yardımıyla belirlenir. Bir web sayfasında köprüler oluşturmak için, bir bağlantı etiketi ve ardından bağlantı Metni kullanabiliriz.

Bir Kriterle Eşleşen Bağlantılar

Bağlantılara, bağlantı metinlerinin tam veya kısmi eşleşmesi kullanılarak erişilebilir. Aşağıdaki örnekler, birden fazla eşleşmenin mevcut olabileceği senaryoları sağlar ve WebDriver'ın bunlarla nasıl başa çıkacağını açıklar.

Bu eğitimde, Web Sürücüsünü kullanarak Bağlantıları bulmak ve bunlara erişmek için mevcut yöntemleri öğreneceğiz. Ayrıca Bağlantılara erişirken karşılaşılan yaygın sorunlardan bazılarını tartışacağız ve bunların nasıl çözüleceği hakkında daha fazla tartışacağız.

Bağlantı Metnini Tamamlayın Selenium – By.linkText()

Bağlantılara tam bağlantı metinlerini kullanarak erişmek By.linkText() yöntemi aracılığıyla yapılır.. Ancak aynı bağlantı metnine sahip iki bağlantı varsa bu yöntem yalnızca ilkine erişecektir. Aşağıdaki HTML kodunu göz önünde bulundurun

Metni Bağla Selenium–By.LinkText()

Metni Bağla Selenium–By.LinkText()

Aşağıdaki WebDriver kodunu çalıştırmayı denediğinizde ilk “buraya tıklayın” bağlantısına ulaşacaksınız.

Metni Bağla Selenium–By.LinkText()

Kodu:

import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.chrome.ChromeDriver;		

public class MyClass {				
    		
    public static void main(String[] args) {									
        String baseUrl = "http://demo.guru99.com/test/link.html";					
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");					
        WebDriver driver = new ChromeDriver();					
        		
        driver.get(baseUrl);					
        driver.findElement(By.linkText("click here")).click();					
        System.out.println("title of page is: " + driver.getTitle());							
        driver.quit();			
    }		

}			

İşte nasıl çalıştığı-

Metni Bağla Selenium–By.LinkText()

Sonuç olarak, otomatik olarak Google'a yönlendirileceksiniz.

Metni Bağla Selenium–By.LinkText()

Kısmi Bağlantı Metnini Tamamlayın Selenium – By.partialLinkText()

Bağlantı metinlerinin bir kısmını kullanarak bağlantılara erişim, By.partialLinkText() yöntem. Birden fazla eşleşme içeren kısmi bir bağlantı metni belirtirseniz yalnızca ilk eşleşmeye erişilecektir. Aşağıdaki HTML kodunu göz önünde bulundurun.

Kısmi Bağlantı Metni Girişi Selenium – By.partialLinkText()

Kısmi Bağlantı Metni Girişi Selenium – By.partialLinkText()

Aşağıdaki WebDriver kodunu çalıştırdığınızda yine Google'a yönlendirileceksiniz.

Kısmi Bağlantı Metni Girişi Selenium – By.partialLinkText()

Kodu:

import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.chrome.ChromeDriver;		

public class P1 {				
    		
    public static void main(String[] args) {									
        String baseUrl = "http://demo.guru99.com/test/accessing-link.html";					
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");					
        WebDriver driver = new ChromeDriver();					
        		
        driver.get(baseUrl);					
        driver.findElement(By.partialLinkText("here")).click();					
        System.out.println("Title of page is: " + driver.getTitle());							
        driver.quit();			
    }		
}

Kısmi Bağlantı Metni Girişi Selenium – By.partialLinkText()

Aynı Bağlantı Metni ile Çoklu bağlantılar nasıl elde edilir

Peki yukarıdaki problemin üstesinden nasıl gelinir? Aynı bağlantı metnine sahip birden fazla bağlantının olduğu ve ilkinin dışındaki bağlantılara erişmek istediğimiz durumlarda bunu nasıl yapacağız?

Bu gibi durumlarda genellikle By.xpath(), By.cssSelector() veya By.tagName() gibi farklı konum belirleyiciler kullanılır.

En yaygın kullanılan By.xpath()'dir. En güvenilir olanıdır ancak karmaşık ve okunaksız da görünür.

Bağlantı Metni için büyük/küçük harf duyarlılığı

Bağlantı Metni İçin Büyük/Küçük Harf Duyarlılığı

için parametreler By.linkText() ve By.partialLinkText() her ikisi de büyük/küçük harfe duyarlıdır, yani büyük harf kullanımı önemlidir. Örneğin, Mercury Tours'un ana sayfasında “egis” metnini içeren iki bağlantı vardır; biri üst menüde bulunan “KAYIT OLUN” bağlantısı, diğeri ise sayfanın sağ alt kısmında bulunan “Buradan kaydolun” bağlantısıdır.

Bağlantı Metni İçin Büyük/Küçük Harf Duyarlılığı

Her iki bağlantı da “egis” karakter dizisini içerse de, bunlardan biri “By.partialLinkText()” yöntemi, karakterlerin büyük harf kullanımına bağlı olarak bu iki bağlantıya ayrı ayrı erişecektir. Aşağıdaki örnek koda bakın.

Bağlantı Metni İçin Büyük/Küçük Harf Duyarlılığı

Kod

public static void main(String[] args) {								
        String baseUrl = "http://demo.guru99.com/test/newtours/";					
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");					
        WebDriver driver = new ChromeDriver();					
        		
        driver.get(baseUrl);					
        String theLinkText = driver.findElement(By					
                .partialLinkText("egis"))			
                .getText();		
        System.out.println(theLinkText);					
        theLinkText = driver.findElement(By					
                .partialLinkText("EGIS"))			
                .getText();		
        System.out.println(theLinkText);					

        driver.quit();			

    }

Bir Bloğun Dışındaki ve İçindeki Bağlantılar

En son HTML5 standardı , etiketlerin , , veya gibi blok düzeyindeki etiketlerin içine ve dışına yerleştirilmesine olanak tanır . “By.linkText()” ve “By.partialLinkText()” yöntemleri, bu blok düzeyindeki öğelerin dışında ve içinde bulunan bir bağlantıya erişebilir. Aşağıdaki HTML kodunu göz önünde bulundurun.

Bir Bloğun Dışındaki ve İçindeki Bağlantılar

Bir Bloğun Dışındaki ve İçindeki Bağlantılar

Aşağıdaki WebDriver kodu, By.partialLinkText() yöntemini kullanarak bu bağlantıların her ikisine de erişir.

Bir Bloğun Dışındaki ve İçindeki Bağlantılar

Kodu:

import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;		
import org.openqa.selenium.chrome.ChromeDriver;		

public class MyClass {				
    		
    public static void main(String[] args) {									
        String baseUrl = "http://demo.guru99.com/test/block.html";					
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");					
        WebDriver driver = new ChromeDriver();					
        		
        driver.get(baseUrl);					
        driver.findElement(By.partialLinkText("Inside")).click();					
        System.out.println(driver.getTitle());					
        driver.navigate().back();			
        driver.findElement(By.partialLinkText("Outside")).click();					
        System.out.println(driver.getTitle());					
        driver.quit();			
    }		
}		

Yukarıdaki çıktı, ilgili sayfa başlıkları doğru şekilde alındığından her iki bağlantıya da başarıyla erişildiğini doğrular.

ÖZET

  • Bağlantılara click() yöntemi kullanılarak erişilir.
  • Bağlantılar, herhangi bir WebElement için mevcut konum belirleyicilerin yanı sıra, bağlantı metni tabanlı konum belirleyicilere de sahiptir:
    • By.linkText() – parametre olarak sağlanan bağlantı metninin tam eşleşmesine dayalı olarak bağlantıları bulur.
    • By.partialLinkText() – bağlantı metninin kısmi metin eşleşmesine dayalı olarak bağlantıları bulur.
  • Yukarıdaki konum belirleyicilerin her ikisi de büyük/küçük harfe duyarlıdır.
  • Birden fazla eşleşme varsa By.linkText() ve By.partialLinkText() yalnızca ilk eşleşmeyi seçecektir. Aynı bağlantı metnine sahip birden fazla bağlantının mevcut olduğu durumlarda xpath, CSS tabanlı diğer konum belirleyiciler kullanılır.
  • findElements() & By.tagName(“a”) yöntemi, sayfadaki konum belirleyici kriterleriyle eşleşen tüm öğeleri bulur
  • Bağlantılara, blok düzeyindeki öğelerin içinde veya dışında olmalarına bakılmaksızın By.linkText() ve By.partialLinkText() tarafından erişilebilir.