Selenide Framework

Erol Evren
4 min readApr 9, 2023

--

Selenide Nedir?

Selenide, Java programlama dili ile yazılmış bir otomasyon test çerçevesidir. Selenium WebDriver’ı kullanarak web uygulamalarının otomasyon testlerini yazmak ve yürütmek için tasarlanmıştır. Selenide, Selenium WebDriver’da bulunan bazı zorlukları gidermek için geliştirilmiştir ve daha basit, daha okunaklı ve daha sürdürülebilir testler yazmanıza yardımcı olur.

Selenide, otomatik olarak beklemeleri yönetir, sayfaları açar, elementleri bulur ve yönetir. Ayrıca, CSS ve XPath ile elementleri bulmak için daha kolay ve okunaklı yöntemler sağlar. Selenide ayrıca, testlerinizi paralel olarak yürütmek için kolay bir yol sağlar ve test sonuçlarını raporlamak için çeşitli entegrasyon seçenekleri sunar.

Selenide’in özellikleri şunlardır:

  • Dinamik bekleme
  • CSS ile nesne seçimi
  • Kolay pencere/çerçeve yönetimi
  • Doğru hata mesajları
  • HTML raporlama
  • Screenshot alma
  • Paralel test desteği

Kurulum

Selenide kurulumu oldukça kolaydır. İlk olarak, projenize Selenide bağımlılığını eklemeniz gerekir. Bu, Maven veya Gradle gibi bir yapılandırma yöneticisi kullanarak yapılabilir. Örneğin, Maven kullanıyorsanız, pom.xml dosyanıza aşağıdaki bağımlılığı ekleyebilirsiniz:

Kolay WebElement Seçimi

Selenide, basit ve okunaklı bir şekilde CSS veya XPath kullanarak elementleri bulmanızı sağlar. Örneğin, aşağıdaki örnek kodda, $(selector) kullanarak CSS seçicisi ile elementi buluyoruz:

Otomatik Bekleme

Selenide, elementleri bulmak için otomatik beklemeyi yönetir. Bu, sayfa yüklendiğinde veya elementin görüntülenebilir hale gelmesi için birkaç saniye beklemeniz gerektiğinde otomatik olarak yapılır. Bu, beklemeleri elle yönetmekten kurtulmanızı ve kodunuzun daha okunaklı hale gelmesini sağlar.

Basit Assertion Yapısı

Selenide, kolay ve anlaşılır bir assertion yapısı sunar. Örneğin, aşağıdaki kodda shouldHave(text("Welcome")) kullanarak elementin metin içeriğini doğruluyoruz:

Basit bir test örneği

Aşağıdaki örnek, Selenide ile basit bir test yazmanın nasıl yapılacağını göstermektedir. Bu test, Google arama sayfasını açar, bir kelime arar ve sonuçların sayısı kontrol eder:

Bu örnekte, open yöntemi ile Google ana sayfası açılır ve $("#searchform input[name='q']") seçici ile arama kutusuna erişilir. Ardından, val yöntemi ile "Selenide" kelimesi aranır ve pressEnter yöntemi ile arama gerçekleştirilir. Son olarak, $("#search .g") seçici ile sonuçların listesi seçilir ve shouldHave yöntemi ile sonuçların sayfasında "selenide.org" metni olup olmadığı kontrol edilir.

Sayfa Nesnesi Modelleri

Selenide, sayfa nesnesi modellerini (Page Object Model) destekler. Bu, sayfa nesnelerini bir sınıf içinde tutmanıza ve daha okunaklı ve sürdürülebilir testler yazmanıza olanak tanır. Aşağıdaki örnekte, Login sayfasının SelenidePage sınıfı kullanılarak modellenmesi gösterilmiştir:

Dinamik Bekleme

Selenide, sayfaların dinamik olmasından kaynaklanan beklemeleri yönetmek için kolay bir yol sağlar. Bu, $(...) veya $$(...) gibi sorgulara eklenen waitUntil yöntemi ile yapılabilir. Aşağıdaki örnekte, bir elemanın belirli bir süre boyunca görünmesi beklenir:

Bu örnekte, `$(“#searchform input[name=’q’]”)` seçiciye `waitUntil(visible, 5000)` yöntemi eklenmiştir.
Bu, eleman görünür olana kadar maksimum 5 saniye bekleyecektir.
Daha sonra, `val` ve `pressEnter` yöntemleri çağrılır ve son olarak sonuçların sayfasında “selenide.org” metni olup olmadığı kontrol edilir.

### CSS ile Nesne Seçimi

Selenide, CSS seçicileri kullanarak nesneleri seçmenize olanak tanır.
Bu, özellikle dinamik web sayfalarında nesnelerin benzersiz kimliklerinin olmadığı durumlarda faydalıdır.
Aşağıdaki örnekte, bir menüden bir öğe seçmek için CSS seçiciler kullanılmaktadır:

Bu örnekte, "[class='list1'] [value='bootstrap-duallist']" seçici ile bir menüden bir öğe seçilir ve click yöntemi ile tıklanır. Ardından, "#pickListResult [value='bootstrap-duallist']" seçici ile sonuçların listesi seçilir ve shouldHave yöntemi ile seçilen öğenin "bootstrap-duallist" olduğu kontrol edilir.

Paralel Test Desteği

Selenide, testlerinizi paralel olarak yürütmek için kolay bir yol sağlar. Bu, TestNG veya JUnit gibi bir test çerçevesi kullanarak yapılabilir. Aşağıdaki örnekte, TestNG kullanılarak iki testin paralel olarak yürütüldüğü görülmektedir:

Bu örnekte, threadPoolSize özelliği ile iki iş parçacığı belirtilir ve invocationCount özelliği ile her bir testin iki kez çağrılacağı belirtilir. setUp yöntemi, her test öncesinde tarayıcı penceresinin tam ekran olarak açılmasını sağlar.

Rapordan Ekran Görüntüleri Alma

Selenide, testleriniz sırasında hata oluştuğunda ekran görüntüleri almanıza olanak tanır. Böylece, hata nedenini daha iyi anlayabilir ve sorunu daha hızlı çözebilirsiniz. Aşağıdaki örnekte, bir test sırasında ekran görüntüsü alma özelliği kullanılmaktadır:

Bu örnekte, screenshot yöntemi kullanılarak "search_results" adında bir ekran görüntüsü alınır. Bu görüntü, testin çalıştığı dizine kaydedilir ve hata oluştuğunda raporda görüntülenebilir.

Özet Olarak Selenide ile Test Otomasyonu

Selenide, web uygulaması testlerinizin otomasyonunu kolaylaştıran birçok özellik sağlar. Özellikle, dinamik web sayfaları için beklemenin yönetimi, nesne seçimi için CSS seçicilerin kullanımı, paralel test desteği ve ekran görüntüleri alma özellikleri sayesinde, testlerinizin daha hızlı ve daha güvenilir bir şekilde çalışmasını sağlar.

Selenide, basit bir arayüze ve kullanımı kolay bir API’ye sahiptir. Bu nedenle, yeni başlayanlar bile hızlıca öğrenebilir ve kullanabilirler. Ayrıca, Selenide, Selenium WebDriver’ın bir üst katmanı olduğu için, Selenium’un tüm özelliklerini de kullanabilirsiniz.

Sonuç olarak, Selenide, web uygulaması testleri için kullanımı kolay bir çözüm sunar. Dinamik web sayfaları için beklemenin yönetimi, CSS seçicilerle nesne seçimi, paralel test desteği ve ekran görüntüleri alma özellikleri sayesinde, testlerinizin daha hızlı ve daha güvenilir bir şekilde çalışmasını sağlar.

Şimdilik bu kadar bir sonraki yazımda görüşmek üzere…

--

--