Selenium WebDriver'da Web Tablosu Nasıl Kullanılır

İçindekiler:

Anonim

HTML Web Tablosu Okumak

HTML tablolarında bulunan öğelere (genellikle metinlere) erişmemiz gereken zamanlar vardır. Ancak, bir web tasarımcısının tablodaki belirli bir hücreye bir kimlik veya ad niteliği sağlaması çok nadirdir. Bu nedenle, "By.id ()", "By.name ()" veya "By.cssSelector ()" gibi olağan yöntemleri kullanamayız. Bu durumda, en güvenilir seçenek "By.xpath ()" yöntemini kullanarak bunlara erişmektir.

Bu Öğreticide, öğreneceksiniz-

  • Tablo için XPath nasıl yazılır
  • İç İçe Tablolara Erişim
  • Nitelikleri Tahminler Olarak Kullanma
  • Kısayol: Selenium'daki Tablolara Erişmek İçin İnceleme Öğesini Kullanın

Tablo için XPath nasıl yazılır

Aşağıdaki HTML kodunu düşünün.

"Dördüncü hücre" metnini içeren hücrenin iç metnini almak için XPath kullanacağız.

Adım 1 - Üst Öğeyi Ayarlayın (tablo)

WebDriver'daki XPath konum belirleyicileri her zaman çift eğik çizgi "//" ile başlar ve ardından ana öğe ile devam eder . Tablolarla uğraştığımız için, ana öğe her zaman

etiketi olmalıdır. Bu nedenle, XPath bulucumuzun ilk bölümü "// tablo" ile başlamalıdır.

Adım 2 - Alt öğeleri ekleyin

'nun hemen altındaki öğe

dir, bu nedenle ,
öğesinin "çocuğu" olduğunu söyleyebiliriz. Ayrıca
, öğesinin "ebeveynidir". XPath'teki tüm alt öğeler, aşağıda gösterilen kod gibi bir eğik çizgi "/" ile ayrılmış olarak üst öğelerinin sağına yerleştirilir.

Adım 3 - Tahminleri Ekleyin

öğesi iki etiketi içerir. Artık bu iki etiketinin etiketinin "çocukları" olduğunu söyleyebiliriz. Sonuç olarak, öğesinin her iki öğesinin de ebeveyni olduğunu söyleyebiliriz.

Çıkarabileceğimiz başka bir şey de iki

öğesinin kardeş olmasıdır. Kardeşler, aynı ebeveyne sahip olan çocuk unsurları ifade eder .

Erişmek istediğimiz

' ye erişmeliyiz, birinci değil. Basitçe "// table / tbody / tr" yazarsak, ilk etiketine erişmiş oluruz.

Öyleyse, ikinci

'ye nasıl erişeceğiz o zaman? Bunun cevabı Predicates kullanmaktır .

Öngörüler, bir alt öğeyi kardeşlerinden ayıran bir çift köşeli parantez "[]" içine alınmış sayılar veya HTML nitelikleridir . Erişmemiz gereken

ikincisi olduğundan, yüklem olarak "[2]" kullanacağız.

Herhangi bir yüklem kullanmazsak, XPath ilk kardeşe erişecektir. Bu nedenle, bu XPath kodlarından birini kullanarak ilk

'ye erişebiliriz.

Adım 4 - Uygun Dayanakları Kullanarak Başarılı Alt Öğeleri Ekleyin

Erişmemiz gereken bir sonraki öğe, ikinci

'nin ilk
'ye ulaşmak için ("dördüncü hücre" metnini içeren), ilk önce ikinci
. 2. ve 3. adımlardan öğrendiğimiz ilkeleri uygulayarak, XPath kodumuzu aşağıda gösterilen gibi sonlandıracağız.

Artık doğru XPath bulucuya sahip olduğumuza göre, istediğimiz hücreye zaten erişebilir ve aşağıdaki kodu kullanarak iç metnini alabiliriz. Yukarıdaki HTML kodunu C Sürücünüze "newhtml.html" olarak kaydettiğinizi varsayar.

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";WebDriver sürücüsü = yeni FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (By.xpath ("// tablo / tbody / tr [2] / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}}

İç İçe Tablolara Erişim

Yukarıda tartışılan aynı ilkeler iç içe geçmiş tablolar için geçerlidir. İç içe geçmiş tablolar, başka bir tablo içinde yer alan tablolardır . Aşağıda bir örnek gösterilmiştir.

"// ebeveyn / çocuk" kullanarak "4-5-6" metinli hücreye erişmek ve önceki bölümdeki kavramları tahmin etmek için aşağıdaki XPath kodunu bulabilmeliyiz.

Aşağıdaki WebDriver kodu, eriştiğimiz hücrenin iç metnini alabilmelidir.

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html";WebDriver sürücüsü = yeni FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (By.xpath ("// table / tbody / tr [2] / td [2] / table / tbody / tr / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}

Aşağıdaki çıktı, iç tabloya başarıyla erişildiğini doğrular.

Nitelikleri Tahminler Olarak Kullanma

Öğe, HTML kodunun derinliklerine, yüklem için kullanılacak sayının belirlenmesi çok zor olacak şekilde yazılırsa, bunun yerine o öğenin benzersiz özelliğini kullanabiliriz.

Aşağıdaki örnekte, "New York'tan Chicago'ya" hücresi, Mercury Tours ana sayfasının HTML kodunun derinliklerine yerleştirilmiştir.

Bu durumda, dayanak olarak tablonun benzersiz özelliğini (genişlik = "270") kullanabiliriz. Öznitelikler, @ simgesi önekine eklenerek yüklemler olarak kullanılır . Yukarıdaki örnekte, "New York'tan Chicago'ya" hücresi dördüncü

bölümünde yer almaktadır ve bu nedenle XPath'imiz aşağıda gösterildiği gibi olmalıdır.

XPath kodunu Java'ya koyduğumuzda, By.xpath () dizgesinin zamanından önce sonlandırılmaması için "270" in her iki tarafındaki çift tırnak işaretleri için geriye eğik çizgi "\" kaçış karakterini kullanmamız gerektiğini unutmayın. .

Artık aşağıdaki kodu kullanarak bu hücreye erişmeye hazırız.

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";WebDriver sürücüsü = yeni FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (By.xpath ("// tablo [@width = \" 270 \ "] / tbody / tr [4] / td")).getText ();System.out.println (innerText);driver.quit ();}

Kısayol: Selenium'daki Tablolara Erişmek İçin İnceleme Öğesini Kullanın

Bir öğenin numarası veya özniteliğinin elde edilmesi son derece zor veya imkansızsa, XPath kodunu oluşturmanın en hızlı yolu Öğeyi Denetle'yi kullanmaktır.

Mercury Tours ana sayfasından aşağıdaki örneği inceleyin.

Aşama 1

XPath kodunu almak için Firebug kullanın.

Adım 2

İlk "tablo" üst öğesini bulun ve solundaki her şeyi silin.

Aşama 3

Kodun kalan kısmının önüne çift eğik çizgi "//" koyun ve WebDriver kodunuza kopyalayın.

Aşağıdaki WebDriver kodu, eriştiğimiz öğenin iç metnini başarıyla alabilecektir.

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";WebDriver sürücüsü = yeni FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (By.xpath ("// tablo / tbody / tr / td [2]"+ "// tablo / tbody / tr [4] / td /"+ "tablo / tbody / tr / td [2] /"+ "tablo / tbody / tr [2] / td [1] /"+ "tablo [2] / tbody / tr [3] / td [2] / yazı tipi")).getText ();System.out.println (innerText);driver.quit ();}

Özet

  • By.xpath () genellikle tablo öğelerine erişmek için kullanılır.
  • Öğe, HTML kodunun derinliklerine, yüklem için kullanılacak sayının belirlenmesi çok zor olacak şekilde yazılırsa, bunun yerine o öğenin benzersiz özelliğini kullanabiliriz.
  • Öznitelikler, @ sembolü önekine eklenerek yüklemler olarak kullanılır.
  • Selenium'daki Tablolara Erişmek İçin İnceleme Öğesini Kullanın