SeleniumDemo · Selenium ile Araç Bilgisi Okuma Demosu

ChromeDriver ile DOM alanlarını okuma, CSS seçicileri ve yardımcı sınıflarla başlık/araç metni ayrıştırmayı gösteren C# konsol demosu.

Bir araç ilanının detay sayfasında fiyat, kilometre ve yakıt türü ayrı alanlar olarak görünür. SeleniumDemo, bu alanların bir C# konsol uygulamasından nasıl okunabileceğini gösteriyor. .NET Framework 4.7.2 üzerinde çalışan örnek, Selenium WebDriver ve ChromeDriver ile yapılandırmada verilen tek bir ilan sayfasını açıyor. Sayfadan aldığı değerleri konsolda etiketleriyle birlikte gösteriyor.

Chrome’dan ilan bilgilerine

Program, açılacak adresi WebSiteURL ayarından alıyor ve bir ChromeDriver örneğiyle sayfaya gidiyor. .classifiedDetailTitle CSS seçicisi başlık bölümünü buluyor. Başlık metni kelimelere ayrılıyor ve StringHelpers.DetailsTitleCut, metindeki “Favorilerime Ekle” ifadesinden önceki kelimeleri bir araya getiriyor. Ayrıştırılan başlık bir değişkene atanıyor. Konsol çıktısını ise ilan bilgi bölümünden alınan alanlar oluşturuyor.

İkinci seçici olan .classifiedInfo, ilan özelliklerinin bulunduğu bölümü hedefliyor. Kod bu bölümün metnini satırlara ayırıyor. Sıfırdan başlayan dizide 0, 2, 4 gibi çift indisli satırlar değer kabul ediliyor. Program bunları CarInfo.carInfo dizisindeki etiketlerle sırayla eşleştiriyor. Fiyat ve konumla başlayan bu dizide marka, seri, model, yıl, yakıt, vites ve kilometre gibi alanlar da yer alıyor. Çıktıda fiyat ya da kilometre gibi değerler sayfanın gösterdiği metin biçiminde kalıyor. Örneğin kilometre değeri üzerinde sayısal bir karşılaştırma yapmak için önce bu metni ayrıca ayrıştırmak gerekir.

Sayfa düzeni değiştiğinde eşleştirme

Örneğin konsoldaki kilometre değerini ilandaki kilometreyle karşılaştırırken, eşleştirmenin satır konumuna göre yapıldığını hesaba katmak gerekiyor. Program, sayfadan alınan metindeki değerlerin tanımlı etiketlerle aynı sırada geldiğini varsayıyor. Sayfa araya bir alan eklerse sonraki değerler yanlış etiketlerle yazılabilir. Başlık bölümünde de başlığı ayıran kelimeler doğrudan sayfadan gelen arayüz metnine bağlı. Seçicilerin ve alan sırasının sayfaya bağlı olması, bu örnekte tarayıcıyı açma adımıyla veriyi doğru yorumlama adımını birbirinden ayırıyor.

Depodaki akış, adresi önceden bilinen bir detay sayfasıyla sınırlı. İlan bilgileri tarayıcıdan alınıp konsolda gösteriliyor. Kodu okurken önce iki CSS seçicisinin hangi bölümü bulduğunu, ardından yardımcı sınıfların metni ve etiketleri nasıl ele aldığını izlemek, ekrandaki bir içeriğin C# uygulamasında hangi varsayımlarla işlendiğini görmeyi sağlıyor.