Eğer web teknolojileri üzerine geliştirme yapıyor iseniz Selenium'u mutlaka duymuşşunuz. Kısaca selenium browser üzerinde test otomasyonu yapmaya yarayan bir firefox eklentisidir. İyi kullanıldığında etkili sonuçlar verir. Ücretsiz, farklı browserlarda da kullanılması, bol miktarda bilgi birikimi (dokümantayon, web sayfası ve blog) olması ve farklı dillerde test caseleri yazmaya olanak sağlaması ise avantajlarıdır.
Selenium'da script dilini Python seçildiğinde oto kayıt drop-down menüsünden bir seçenek seçildiğinde çoğu zaman alltaki gibi Select fonksiyonu içerisinde web objelerinde arayacağı fonksiyonu yazar ve görülebilen secenekler üzerinde arama yapar.
Select(driver.find_element_by_id("id_promotion")).select_by_visible_text("OPTION")
Fakat bu satırı çalıştırdığınızda aşağıdaki gibi bir Select komutunun tanımlanmadığı ile ilgili bir hata ile karşılaşırsınız:
NameError: global name 'Select' is not defined
File "D:\automation\test\admin\run.py", line 11, in <module>
testObject.voucherAdd(5)
File "D:\automation\test\admin\test_case_imps.py", line 48, in voucherAdd
Select(driver.find_element_by_id("id_promotion")).select_by_visible_text("Free of Charge")
File "D:\automation\test\admin\run.py", line 11, in <module>
testObject.voucherAdd(5)
File "D:\automation\test\admin\test_case_imps.py", line 48, in voucherAdd
Select(driver.find_element_by_id("id_promotion")).select_by_visible_text("Free of Charge")
Bu hatadan kurtulmak için Selenium IDE'nin önerdiği dışında bir yapı kullanılabilir. Örneğin Python dilinde drop-down menü içeriği bir liste olarak alınır ve liste içerisinde kullanılmak istenen seçenerek aratılır. Bulunduğunda ise ilgili seçeneğe tıklanırak drop-down menüden seçim tamamlanmış olur. Bu sayede bir döngü içerisinde bir birine bağlı listeler kontrol edilebilir.
Örneğin yukarıda görüntüsü verilen sayfanın otomasyonu yapılmak istenildiğinde, ilgili objenin yerini bulmak için kullanılabilecek en iyi yollardan birisi Xpath adresinden objeye ulaşmaktır. Soldaki gibi secenekleri olan bir menünün sağdaki görüntüsünde görüldüğü gibi mouse ile sağ klik yapıldığında verilen seceneklerden Xpath adresi kolaylıkla bulunabilir. Otomasyon scripti aşağıdaki gibi olabilir.
#options değişkenine menüdeki seçenekleri ata
options = driver.find_element_by_xpath('//*[@id="id_promotion"]').find_elements_by_tag_name('option')
for option in options:
#seçenekleri listele
print option.text
#option4 with ... "none" seçeneğini seç
if option.text == 'option4 with ... "none"':
option.click()
#kontrol: doğru seçenek getirilmiş mi?
print "\n\n sonuc: \'%s\' secenegi getirildi" %option.text
break
options = driver.find_element_by_xpath('//*[@id="id_promotion"]').find_elements_by_tag_name('option')
for option in options:
#seçenekleri listele
print option.text
#option4 with ... "none" seçeneğini seç
if option.text == 'option4 with ... "none"':
option.click()
#kontrol: doğru seçenek getirilmiş mi?
print "\n\n sonuc: \'%s\' secenegi getirildi" %option.text
break