Web Tablosu Nasıl Kullanılır? Selenium

⚡ Akıllı Özet

Selenium Web Tablo işleme, QA mühendislerinin XPath, CSS ve diğer yöntemleri kullanarak HTML satır ve sütunlarından tablo halindeki verileri okumasını sağlar. Selenium 4 göreceli konum belirleyici. Bu makale, statik tabloları, iç içe tabloları, öznitelik yüklemlerini ve dinamik ızgaralar için yapay zeka tekniklerini ele almaktadır.

  • 🧱 XPath Anatomisi: Her tablo bulucu //table ile başlar ve koşullar kullanarak tbody, tr ve td'ye doğru ilerler.
  • 🔁 Dinamik Satırlar: `findElements` fonksiyonu, WebElements'lerden oluşan bir liste döndürür; böylece döngüler çalışma zamanında satırları sayabilir ve hücreleri okuyabilir.
  • 🪄 Selenium 4: Yukarıda, aşağıda ve yakında bulunan göreceli konum belirleyiciler, bilinen bir çapa elemanının etrafındaki hücreleri hedeflemeyi kolaylaştırır.
  • ???? Yapay Zeka Konum Belirleyiciler: Kendi kendini onaran araçlar, sütun kaymalarını algılar ve manuel XPath düzenlemelerine gerek kalmadan satır kimliğini kurtarır.
  • Kısayolu İncele: Tarayıcı Geliştirici Araçları, güvenilirliği artırmak için ilk tabloya kadar kısaltabileceğiniz tam bir XPath kopyalar.

Selenium Web Tablosu XPath örneği

Web Tablosu Nedir? Selenium?

A Web Tablosu in Selenium Web tablosu, verilerin veya bilgilerin tablo şeklinde gösterimi için kullanılan bir WebElement'tir. Görüntülenen veriler statik veya dinamik olabilir. Web tablosu hücrelerine ve satırlarına, konum belirleyicilerle birlikte WebElement yöntemleri aracılığıyla erişilir. Tipik bir örnek, e-ticaret ürün sayfasında gösterilen ürün özellikleri tablosudur.

HTML Web Tablosunu Okuma

Test uzmanlarının HTML tablolarının içinde yer alan öğelere, genellikle metin değerlerine erişmesi gereken birçok durum vardır. Ancak, web tasarımcıları nadiren tek tek hücrelere id veya name özniteliği eklerler. Bu nedenle, By.id(), By.name() veya By.cssSelector() gibi yöntemler nadiren işe yarar. Bu senaryoda, en güvenilir seçenek By.xpath() yöntemidir çünkü tablo etiketi içindeki üst-alt ilişkilerini inceler.

Web Tablosu Nasıl Kullanılır? Selenium

Web tablolarını işlemek için aşağıdaki HTML kodunu göz önünde bulundurun Selenium.

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

Kullanacağız XPath “dördüncü hücre” metnini içeren hücrenin iç metnini almak için

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

Adım 1 – Ana Öğeyi Ayarlayın (tablo)

WebDriver'daki XPath konum belirleyicileri her zaman çift eğik çizgi "//" ile başlar ve ardından üst öğe gelir.. Web tablolarıyla ilgilendiğimiz için Seleniumana öğe her zaman olmalıdır etiket. Çalışmamızın ilk bölümü Selenium Bu nedenle XPath tablo bulucu "//table" ile başlamalıdır.

Selenium Web Tablosu Örneği

Adım 2 – Alt öğeleri ekleyin

Doğrudan altındaki unsur dır , Bu yüzden çocuğudur Tam tersine, ebeveynidir XPath'teki tüm alt öğeler, aşağıda gösterildiği gibi, üst öğelerinin sağına, aralarında tek bir eğik çizgi "/" olacak şekilde yerleştirilir.

Selenium Web Tablosu Örneği

Adım 3 – Tahminleri Ekle

O öğe iki tane içeriyor Etiketler. Bu ikisi Etiketler, alt öğelerdir. , Bu yüzden İkisinin de ebeveyni odur. İki Öğeler kardeştir. Kardeşler, aynı ebeveyni paylaşan çocuk unsurlarıdır..

Ulaşmak için “Dördüncü hücreyi” içeren şeye ulaşmak için öncelikle ona erişmeliyiz. ikinci İlkini değil. Sadece "//table/tbody/tr" yazmak ilkini hedefleyecektir. etiket.

Peki ikinciye nasıl erişeceğiz? Cevap, kullanmaktır. yüklemler. Yüklemler, bir alt öğeyi kardeşlerinden ayıran, köşeli parantezler “[ ]” içine alınmış sayılar veya HTML öznitelikleridir.. İhtiyacımız olan satır ikinci satır olduğundan, yüklem olarak “[2]” kullanıyoruz.

 Selenium Web Tablosu Örneği

Eğer koşulu atlarsak, XPath ilk kardeş öğeyi döndürür. Bu nedenle, aşağıdaki XPath kodlarından herhangi biri ilk öğeye ulaşacaktır. .

Selenium Xpath kullanan Web Tablosu

Adım 4 – Uygun Yüklemleri Kullanarak Başarılı Alt Öğeleri Ekleyin

İhtiyacımız olan bir sonraki unsur ikincisidir. 2. ve 3. adımlardaki kuralları uygulayarak, aşağıda gösterilen XPath'e ulaşırız.

Web Tablosu Selenium XPath'ı kullanma

Artık doğru XPath konum belirleyicisine sahip olduğumuza göre, aşağıdaki kodu kullanarak hücreye erişebilir ve içindeki metni okuyabiliriz. Bu, HTML sayfasını C sürücünüzde "newhtml.html" olarak kaydettiğinizi varsayar.

Web Tablosu Selenium XPath'ı kullanma

public static void main(String[] args) {
    String baseUrl = "https://demo.guru99.com/test/write-xpath-table.html";
    WebDriver driver = new FirefoxDriver();

    driver.get(baseUrl);
    String innerText = driver.findElement(
        By.xpath("//table/tbody/tr[2]/td[2]")).getText();
    System.out.println(innerText);
    driver.quit();
}

Web Tablosu Selenium XPath'ı kullanma

İç İçe Tablolara Erişim

Aynı prensipler iç içe tablolar için de geçerlidir. İç içe tablolar, başka bir tablonun içine yerleştirilmiş tablolardır.. Aşağıda bir örnek gösterilmiştir.

İç İçe Tablolara Nasıl Erişilir? Selenium

Önceki bölümde ele alınan üst/alt ve yüklem kavramlarını kullanarak "4-5-6" metnini içeren hücreye erişmek için aşağıdaki XPath'i oluşturabiliriz.

İç İçe Tablolara Nasıl Erişilir? Selenium

Aşağıdaki WebDriver kodu, hedef hücrenin iç metnini alır.

İç İçe Tablolara Erişim Selenium

public static void main(String[] args) {
    String baseUrl = "https://demo.guru99.com/test/accessing-nested-table.html";
    WebDriver driver = new 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.

İç İçe Tablolara Erişim Selenium

Nitelikleri Yüklem Olarak Kullanma

Eğer öğe HTML'nin derinliklerinde yer alıyorsa ve kardeş öğeleri saymak zorlaşıyorsa, bunun yerine o öğenin benzersiz özelliğini kullanabiliriz.

Aşağıdaki örnekte, "New York'tan Chicago'ya" hücresi oldukça iç kısımda yer almaktadır. Mercury Turlar ana sayfası.

Selenium Nitelikleri Tahmin Olarak Kullanan Web Tablosu Örneği

Selenium Nitelikleri Tahmin Olarak Kullanan Web Tablosu Örneği

Tablonun benzersiz özelliğini (width=”270″) koşul olarak kullanabiliriz. Nitelikler, @ simgesiyle önek eklenerek yüklem olarak kullanılırYukarıdaki örnekte, "New York'tan Chicago'ya" hücresi ilk hücrede yer almaktadır. dördüncüsünün Dolayısıyla XPath'imiz aşağıdaki gibi görünmelidir.

Selenium Niteliklerin Tahmin Olarak Kullanıldığı Web Tablosu Örneği

XPath'i içeri koyduğunuzda bunu unutmayın. Java“270” ifadesinin etrafındaki çift tırnakları ters eğik çizgiyle kaçış karakteri olarak kullanarak By.xpath() dizesinin erken sonlandırılmasını önleyin.

Selenium Niteliklerin Tahmin Olarak Kullanıldığı Web Tablosu Örneği

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

Selenium Niteliklerin Tahmin Olarak Kullanıldığı Web Tablosu Örneği

public static void main(String[] args) {
    String baseUrl = "https://demo.guru99.com/test/newtours/";
    WebDriver driver = new FirefoxDriver();

    driver.get(baseUrl);
    String innerText = driver.findElement(By
        .xpath("//table[@width=\"270\"]/tbody/tr[4]/td"))
        .getText();
    System.out.println(innerText);
    driver.quit();
}

Selenium Niteliklerin Tahmin Olarak Kullanıldığı Web Tablosu Örneği

Kısayol: Tablolara Erişmek için Öğeyi İncele'yi kullanın Selenium

Bir öğenin dizinini veya özniteliğini elde etmek zorsa, XPath'i oluşturmanın en hızlı yolu, modern tarayıcı Geliştirici Araçları'ndaki Öğeyi İncele özelliğini kullanmaktır.

Aşağıdaki örneği ele alalım. Mercury Turlar ana sayfası.

Selenium Niteliklerin Tahmin Olarak Kullanıldığı Web Tablosu Örneği

1. Adım

Hedef hücreye sağ tıklayın ve DOM yolunu görüntülemek için "İncele"yi seçin, ardından tam XPath'i kopyalayın.

Selenium Niteliklerin Tahmin Olarak Kullanıldığı Web Tablosu Örneği

2. Adım

İlk "tablo" ana öğesini arayın ve solundaki her şeyi silin.

Selenium Niteliklerin Tahmin Olarak Kullanıldığı Web Tablosu Örneği

3. Adım

Kalan XPath'in başına çift eğik çizgi "//" ekleyin ve WebDriver kodunuza kopyalayın.

Selenium Nitelikler içeren web tablosu örneği

Aşağıdaki WebDriver kodu, derinlemesine iç içe geçmiş öğenin iç metnini alır.

Selenium Nitelikler içeren web tablosu örneği

public static void main(String[] args) {
    String baseUrl = "https://demo.guru99.com/test/newtours/";
    WebDriver driver = new FirefoxDriver();

    driver.get(baseUrl);
    String innerText = driver.findElement(By
        .xpath("//table/tbody/tr/td[2]"
        + "//table/tbody/tr[4]/td/"
        + "table/tbody/tr/td[2]/"
        + "table/tbody/tr[2]/td[1]/"
        + "table[2]/tbody/tr[3]/td[2]/font"))
        .getText();
    System.out.println(innerText);
    driver.quit();
}

Dinamik Web Tablosunda Satır ve Sütun Sayısını Nasıl Sayabilirsiniz?

Dinamik web tabloları, örneğin gösterge panoları veya arama sonuçları, her yüklemede farklı sayıda satır görüntüler. Bunları yönetmek için şunu kullanın: findElements her birini getirmek Önce bir Listeye dönüştürün, ardından her hücreyi okumak için döngü yapın. Aşağıdaki kod parçası, kimliği "müşteriler" olan bir tablodaki satırları sayar ve her hücreyi okur.

List<WebElement> rows = driver.findElements(
    By.xpath("//table[@id='customers']//tr"));
System.out.println("Total rows: " + rows.size());

for (int i = 1; i <= rows.size(); i++) {
    List<WebElement> cells = driver.findElements(
        By.xpath("//table[@id='customers']//tr[" + i + "]/td"));
    for (WebElement cell : cells) {
        System.out.println(cell.getText());
    }
}

Bulucu cihazı bir şeye sarın. WebDriverWait 'da visibilityOfAllElementsLocatedBy Tablo AJAX ile yüklendiğinde, bu durum yavaş işlenen tablolarda eski öğe referanslarının oluşmasını önler.

Selenium Web Tabloları için 4 Göreceli Konum Belirleyici

Selenium 4. bölümde, görsel konuma göre öğeleri hedefleyen göreceli konum belirleyiciler tanıtıldı. Bunlar, satırların yeniden sıralanması nedeniyle XPath indekslerinin bozulduğu durumlarda kullanışlıdır. Yöntemler above(), below(), toLeftOf(), toRightOf(), ve near() Hepsi bir bağlantı WebElement'ini kabul eder.

import static org.openqa.selenium.support.locators.RelativeLocator.with;

WebElement emailHeader = driver.findElement(By.xpath("//th[text()='Email']"));
WebElement emailCell = driver.findElement(
    with(By.tagName("td")).below(emailHeader));
System.out.println(emailCell.getText());

Sütun sırası değiştiğinde bile göreceli konum belirleyiciler okunabilir kalır. Veri odaklı sayfalarda en iyi sonuçları elde etmek için bunları açık bekleme komutlarıyla birlikte kullanın.

Dinamik Web Tablolarını Yönetmek için Yapay Zeka Araçları

Yapay zeka destekli test platformları, sık sık değişen şebekelerde konum belirleyici bakımını azaltır. Bu tür araçlar, yapay zeka destekli test platformları gibi araçlarla desteklenir. Testim, Mabl, ve İşlevselleştir Bilgisayar görüşü ve DOM modellerini kullanarak sütun kaymalarını tespit eder ve konum belirleyicileri otomatik olarak onarır. Sabit XPath indeksleri yerine başlık metni ve hücre benzerliğine göre satırları tanımlarlar.

Saf için Selenium projeler, kütüphaneler gibi Healenium WebDriver'ı sarmalayın ve çalışma zamanında bozuk konum belirleyicileri yeniden yazın. Bu araçları WebDriverWait ile birleştirerek, her kullanıcı arayüzü değişikliğinden sonra seçicileri yeniden yazmadan dinamik tablo komut dosyalarının kararlı kalmasını sağlayın.

ÖZET

  • By.xpath() yöntemi, bir Web Tablosunun hücrelerine erişmenin en güvenilir yoludur. Selenium.
  • Kardeşleri saymak zorsa, @ sembolüyle başlayan benzersiz bir özelliği koşul olarak kullanın.
  • `findElement` bir Liste döndürür. Dinamik tablolarda satır sayımını destekleyen bir özellik.
  • Selenium 4 göreceli konum belirleyici (yukarıda, aşağıda, yakınında) pozisyonel XPath'e olan bağımlılığı azaltır.
  • Geliştirici Araçları'ndaki Öğeyi İncele özelliği, derinlerde gizlenmiş hücreler için XPath oluşturmayı hızlandırır.
  • Yapay zeka araçları gibi TestimMabl ve Healenium, değişen ağlar için kendi kendini onaran konum belirleyicileridir.

SSS

Bir Web Tablosu Selenium Tablo verilerini satır ve sütunlar halinde görüntüleyen bir WebElement'tir. Statik veya dinamik olabilir. Test uzmanları, tablolar nadiren tek tek hücrelerde benzersiz kimlikler gösterdiği için, hücrelerine WebElement yöntemlerini XPath veya CSS konum belirleyicileriyle birleştirerek erişirler.

Çoğu tablo hücresi id veya name özniteliği taşımadığından, By.id() ve By.name() işe yaramaz. XPath, tablo, tbody, tr ve td öğelerinin üst-alt yapısını dolaşır; bu da onu hücreler için en güvenilir konum belirleyici yapar.

Satır sayısını belirlemek için driver.findElements(By.xpath(“//table[@id='tbl']//tr”)).size() ve sütun sayısını belirlemek için //table[@id='tbl']//tr[1]/td kullanın. findElements yöntemi bir Liste döndürür. Satır toplamlarını hızlı bir şekilde hesaplamak için size() fonksiyonunu destekleyen bir özellik.

Selenium 4. sürümde above(), below(), toLeftOf(), toRightOf() ve near() gibi göreceli konum belirleyiciler tanıtıldı. Bunlar, bilinen bir çapa hücresinin etrafındaki hücreleri hedeflemeye yardımcı olur; bu da dinamik tablolarda XPath indeksleri değiştiğinde faydalıdır.

findElements ile satırlar arasında döngü yapın, ardından getText() ile her hücreyi okuyun. //tr[“+i+”]/td[“+j+”] gibi dize birleştirmeleri kullanarak XPath'i dinamik olarak oluşturun. Değerleri okumadan önce WebDriverWait ile tablonun yüklenmesini bekleyin.

Evet. Yapay zeka destekli araçlar gibi TestimMabl ve Functionize, bilgisayar görüşü ve DOM modellerini kullanarak tablo sınırlarını tespit eder, başlıkları çıkarır ve sütunlar kaydığında konum belirleyicileri otomatik olarak onarır. Bu, dinamik gösterge panoları için XPath bakımını azaltır.

Yapay zeka modelleri, önceki çalıştırmalardan satır kalıplarını öğrenir ve sabit indeksler yerine metin benzerliğini kullanarak hücreleri eşleştirir. Bir satır taşındığında veya bir sütun yeniden sıralandığında, yapay zeka bulucu XPath'i yeniden yazmaya gerek kalmadan hedefi bulmaya devam eder.

`findElement` tek bir WebElement döndürür ve bulunmaması durumunda `NoSuchElementException` hatası fırlatır. `findElements` ise bir Liste döndürür. Eşleşme bulunmazsa boş bir liste döndürür. Arama yaparken `findElements` kullanın.ping Tablo satırları veya sütunları üzerinde.

Bu yazıyı şu şekilde özetleyin: