Öğeleri Bağlantı Metnine Göre Bul & Selenium Webdriver'da Kısmi Bağlantı Metni

İçindekiler:

Anonim

Selenium'daki Bağlantı Metni nedir?

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

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 çok eşleşmenin mevcut olduğu senaryolar sağlar ve WebDriver'ın bunlarla nasıl başa çıkacağını açıklar.

Bu eğitimde, Webdriver 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 bazı genel sorunları tartışacağız ve bunların nasıl çözüleceğini daha ayrıntılı olarak tartışacağız.

İşte öğreneceğiniz şey

  • Exact Text Match kullanarak bağlantılara erişim: By.linkText ()
  • Kısmi Metin Eşleştirme kullanarak bağlantılara erişme: By.partialLinkText ()
  • Aynı Bağlantı Metnine Sahip Birden Çok Bağlantı Nasıl Elde Edilir
  • Bağlantı Metni için büyük / küçük harf duyarlılığı
  • Blok Dışındaki ve İçerisindeki Bağlantılar

Exact Text Match kullanarak bağlantılara erişim: By.linkText ()

Bağlantılara tam bağlantı metinlerini kullanarak erişim, By.linkText () yöntemiyle yapılır . Bununla birlikte, aynı bağlantı metnine sahip iki bağlantı varsa, bu yöntem yalnızca ilkine erişecektir. Aşağıdaki HTML kodunu düşünün

Aşağıdaki WebDriver kodunu çalıştırmayı denediğinizde, ilk "buraya tıklayın" bağlantısına erişeceksiniz.

Kod:

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 sürücüsü = yeni ChromeDriver ();driver.get (baseUrl);driver.findElement (By.linkText ("buraya tıklayın")) tıklayın ();System.out.println ("sayfanın başlığı: + driver.getTitle ());driver.quit ();}}

İşte böyle çalışıyor-

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

Kısmi Metin Eşleştirme kullanarak bağlantılara erişme: By.partialLinkText ()

Bağlantı metinlerinin bir bölümünü kullanarak bağlantılara erişim, By.partialLinkText () yöntemi kullanılarak yapılır . Birden çok 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 düşünün.

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

Kod:

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 sürücüsü = yeni ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("burada")). tıklayın ();System.out.println ("Sayfanın başlığı: + driver.getTitle ());driver.quit ();}}

Aynı Bağlantı Metnine Sahip Birden Çok Bağlantı 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 ilki dışındaki bağlantılara erişmek istediğimiz durumlarda, bu konuda nasıl hareket ederiz?

Bu tür durumlarda, genellikle farklı konumlandırıcılar, yani… By.xpath (), By.cssSelector () veya By.tagName () kullanılır.

En yaygın olarak kullanılan By.xpath () 'dir. En güvenilir olanıdır, ancak aynı zamanda karmaşık ve okunamaz görünmektedir.

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

By.linkText () ve By.partialLinkText () parametrelerinin ikisi de büyük / küçük harf 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 "KAYDOL" bağlantısı, diğeri ise sağ alt kısımda bulunan "Buradan kaydolun" bağlantısıdır. sayfanın.

Her iki bağlantı da "egis" karakter dizisini içerse de, 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.

Kodu

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

Blok Dışındaki ve İçerisindeki Bağlantılar

En son HTML5 standardı, etiketlerinin

,

veya

gibi blok düzeyindeki etiketlerin içine ve dışına yerleştirilmesine izin verir. "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 düşünün.

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

Kod:

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 sürücüsü = yeni ChromeDriver ();driver.get (baseUrl);driver.findElement (By.partialLinkText ("Inside")). tıklayın ();System.out.println (driver.getTitle ());sürücü.navigate (). geri ();driver.findElement (By.partialLinkText ("Dış")) tıklayın ();System.out.println (driver.getTitle ());driver.quit ();}}

Yukarıdaki çıktı, ilgili sayfa başlıklarının doğru şekilde alındığı için 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.
  • Herhangi bir WebElement için kullanılabilen konum belirleyicilerin yanı sıra, Bağlantılar ayrıca bağlantı metni tabanlı buluculara da sahiptir:
    • By.linkText () - parametre olarak sağlanan bağlantı metninin tam eşleşmesine göre bağlantıları bulur.
    • By.partialLinkText () - bağlantı metninin kısmi metin eşleşmesine göre bağlantıları bulur.
  • Yukarıdaki konumlandırıcıların 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çer. Aynı bağlantı metnine sahip birden çok bağlantının bulunduğu bu gibi durumlarda, xpath, CSS'ye dayalı diğer konumlandırıcılar kullanılır.
  • findElements () & By.tagName ("a") yöntemi, sayfadaki konum belirleyici kriterleriyle eşleşen tüm öğeleri bulur
  • Bağlantılara By.linkText () ve By.partialLinkText () tarafından blok düzeyindeki öğelerin içinde veya dışında olsalar da erişilebilir.