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.

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.
Kullanacağız XPath “dördüncü hücre” metnini içeren hücrenin iç metnini almak için
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.
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.
.png)
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.
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. .
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.
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.
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();
}
İç İç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.
Ö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.
Aşağıdaki WebDriver kodu, hedef hücrenin iç metnini alır.
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.
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ı.
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.
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.
Artık aşağıdaki kodu kullanarak o hücreye erişmeye hazırız.
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();
}
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ı.
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.
2. Adım
İlk "tablo" ana öğesini arayın ve solundaki her şeyi silin.
3. Adım
Kalan XPath'in başına çift eğik çizgi "//" ekleyin ve WebDriver kodunuza kopyalayın.
Aşağıdaki WebDriver kodu, derinlemesine iç içe geçmiş öğenin iç metnini alır.
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.

.png)
.png)



















