Selenium testleri otomatikleştiren bir test aracıdır. Selenium test betikleri oluşturmak için Java, C#, Python vb. gibi birden çok programlama dilini kullanabilirsiniz. Ve ayrıca Firefox eklentisi olan Selenium-IDE ile test yazım dillerini öğrenmeden kolayca testinizi otomatik hale getirebilirsiniz.
Test Otomasyonu
Regresyon Testlerini Destekler
Geliştiriciler İçin Hızlı Geri Bildirim Sağlar
Test Durumlarını Tekrarlamayı Sağlar
Selenium’u birden fazla tarayıcıda yeniden çalıştırmak için Javascript kütüphanesi geliştirildi. Bunun sonucunda Selenium IDE ve Selenium RC (Remote Control)’nin temeli olan Selenium Core meydana geldi. Tarayıcıların Javascript için güvenlik kısıtlamaları Selenium için bazı durumları imkansız hale getirdi. Bunun için de WebDriver geliştirildi.
Selenium Araçları
Selenium IDE
Test komutlarını oluşturmak için kullanılan Firefox eklentisi olan bir araçtır. Selenium IDE kullanarak test durumları kaydedilerek yürütülür ve böylece yeniden kullanılabilir test komutları ortaya çıkar.
Selenium RC
Birden fazla testin sürekli olarak yapılmasını sağlar. Bir Selenium RC sunucusu ile çalışır.
Selenium Grid
Selenium RC’ye benzer şekilde birden fazla sunucu ile çalışabilir. Paralellik ön plandadır. Yani aynı anda farklı testler farklı uzak makinelerde çalıştırılabilir.
Selenium WebDriver
Selenium RC’nin yöntemi olarak Javascript fonksiyonlarını tarayıcıya göndermez.
Örnek olarak Python’da webdriver kullanarak küçük bir test yazalım. Öncelikle Python için selenium modülünü kurmak gerekir. Uygulamamız TurkHackTeam'ın Türkçe Web sayfasını açsın ve başlık (title) bilgilerini kontrol etsin.
import unittest
from selenium import webdriver
class FFTurkHacTeamTest(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
def test_baslik(self):
self.driver.get("http://www.turkhackteam.com/TR/anasayfa")
self.assertIn("TurkHackTeam - Anasayfa", driver.title)
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()
Tanımladığımız sınıfın içerisine birden fazla test yazabiliyoruz. Yazılan testler alfabetik sırayla (metodun ismine göre) çalışıyor ve her çalışan testin ardından tearDown metodu otomatik çağrılıyor. Programın tarayıcıda etkileşimde olacağı elemanları bulurken Firefox’un Firepath ve Firebug araçlarından yararlanılabilir. Elemanlar sınıf ismine göre (find_element_by_class_name), yazılan css’e göre (find_element_by_css_selector) ve elemanın id’sine göre (find_element_by_id) bulunabilir. Bu elemanlar form ögesi veya bir menü olabilir. Webdriver’ın metotlarını kullanarak formları doldurabilir ve sayfalardaki bağlantılara tıklayarak gezinebiliriz.