Selenium ile element renklerini kontrol edebilir miyim?

Serhat Ozdursun
2 min readJan 13, 2021

--

Başlıkta ki sorunun cevabı evet :)

Fakat önemli olan buna neden ihtiyacımız olabilir ve nasıl yaparız?

İlk sorunun birden çok cevabı var. Örneğin test edeceğimiz sayfada bir doğrulama var ve sonuç olarak bir metin vermiyor sadece ilgili elementi kırmızı ile belirtiyor. Bu alan için bir test yazmak istediğimizde o elementin rengi -doğrulama sonucu hata olduğunda- kırmızı oldu mu kontrol etmemiz gerekiyor. Böyle bir durumda elentin rengini alıp istediğimiz renk mi değil mi kontrol etmemiz gerekir. Aynı herhangi bir metini kontrol ettiğimizde olduğu gibi. Ya da test ettiğimiz sayfadaki butonlar hover ile renk değiştiriyor ve bu özeliği otomasyon testlerimize eklemek istiyoruz. Bu durumda da elementin önceki rengini ve hover olduktan sonraki rengini çekip karşılaştırmamız veya teker teker doğrulamamız gerekir. Bu örnekleri çoğaltabiliriz.

İkinci sorumuz nasıl yapabilriz? Bu sorunun da birden çok cevabı var “Galen” gibi farklı frameworklerle ile bir resim üzerinden bunu doğrulayabiliriz. Fakat ben genelde elementin css özelikleri üzerinden renk kodunu alıp testimi yapmayı tercih ediyorum.

Bu kadar girişten sonra hızlıca konuya girersek aslında bu işlemin ne kadar basit ve olduğunu anlayacaksınız.

1- Tabi ki ilk önce elementi bulmamız gerekiyor. Elmenti bulduktan sonra getCssValue methodu ile bulduğumuz elementin renk kodunu hex codunun string hali ile getirebiliriz.

var color = driver.findElement(By.id("test")).getCssValue("border-bottom-color");

Burada dikkat etmemiz gereken önemli nokta doğru css değerini çekmek olmalı, bunu da ilgili elementin üzerinde sağ tıklayıp inspect’i tıkladıkdan sonra elementin “Styles” bileri üzeriden kontrol edebiliriz. Gelen değeri direk olarak hex codu ile kıyaslayabilrisiniz.

Peki şöyle bir senaryonuz var. BDD yazıyorsunuz ve henüz elementin rengini inspect ile bulmanız mümkün değil. Size iletilen analiz dokümanarında da renk hex olarak değil rgb olarak verildi. Bu durumda nasıl bir kontrol yapmalıyız. Bu sorunun cevabı da çok basit aslında java Color sınıfını kullaranak bu sorunu hızlıca çözebiliriz. Tek yapmamız gereken Color sınıfının decode metotunu kullanmak.

var actualRgbColorCode = Color.decode(color)

Artık rgb koduna sahip olduğumuza göre beklenen rgb kodunuda oluşturup testimizi yapabiliriz.

var exceptedColor = new Color(167, 0, 20);assertEquals(exceptedColor, actualRgbColorCode);

Evet konu kısa demiştim, kısa ama benim çok sık kulandığım ve çok işe yarayan bir yöntem bu umarım sizin içinde fark yaratacak bir yazı olmuştur.

Sevgilerimle virüslerden uzak kalın ve hoşça kalın.

--

--

Serhat Ozdursun
Serhat Ozdursun

Written by Serhat Ozdursun

QA Automation Engineer at Unemployment

No responses yet