Selenium Standalone Server, Selenium Remote Control (RC), Selenium Testlerini GRID yapısı ile Uzak Test Sistemlerinde Çalıştırmak
Selenium tarihçesi ve bileşenlerinden daha önceki notlarımızda yer almıştı. Henüz okuma fırsatı bulamadıysanız bu adreste. Bu küçük hatırlatma notunda ise Selenium scriptlerinizi kendi makinanız yerine farklı test sistemlerinde eş zamanlı olarak çalıştırmayı özetleyeceğiz. Test etmeniz gereken çok fazla senaryonuz var ayrıca web uygulamanızı birden fazla browserda test etmek gibi bir ihtiyaç ortaya çıktı ise, test döngülerinizi hızlandırmak ve “biraz” zaman kazanmanız gerekebilir. Size Selenium Standalone Server’ ı GRID konfigürasyonu ile kurmanızı öneriyorum. Bu notu kayıt altına aldığım esnada stand alone server’ ın son versiyonu olan 2.48.2 ihtiyacınız olan tüm bileşenleri yani hub, webdriver ve eski RC versiyonunu içermekte ve aşağıdaki adresten indirilebilmekteydi.
http://selenium-release.storage.googleapis.com/2.48/selenium-server-standalone-2.48.2.jar
eğer bu link çaçışmıyor ise selenium ana sayfasından stand alone server’ ı indrimeyi deneyebilirsiniz (http://www.seleniumhq.org/download/)
Bileşenleri biraz açıklayalım HUB aslında tüm istekleri alan ve yönlendiren selenium merkezi bileşeni. Test frameworkünü oluşturduğumuz ve yönettiğimize makinenin bu anlamda HUB görevi ile başlaması için:
java -jar selenium-server-standalone-2.48.2.jar -role hub
komutunu yazmamız yeterli. Sisteminizde Java’ nın güncel versiyonu kurulu ise, HUB çalıştığında son iki satırda şu mesajları görmelisiniz:
Nodes should register to http://192.168.1.21:4444/grid/register/ Selenium Grid hub is up and running
Selenium Grid, işleri diğer düğümlere dağıtmak için hazır durumda. HUB varsayılan port olarak 4444’ de çalışmaya başlar. Hub’ ın durumunu görmek için tarayıcı adresinize aşağıdaki linki yazabilirsiniz.
http://localhost:4444/grid/console
Fakat anlayacağınız üzere testleri çalıştıracağınız makineleri/düğümleri (nodes) yukarıda (benim bilgisayarıma ait IP) verilen IP adresi (ya da hostname) ve portu kullanarak HUB’ a tanıtmanız (register) gerekiyor. Bunun için uzak düğümlerede aynı versiyon standa alone dosyasını kopyalamalı (selenium-server-standalone-2.48.2.jar) ve düğümleri register etmek için aşağıdaki komutu çalıştırmalısınız (IP kısmını değiştirmeyi unutmayın) :
java -jar selenium-server-standalone-2.14.0.jar -role node -hub http:// 192.168.1.21:4444/grid/register
Bu durumda yukarıdaki komutu çalıştırdığınız makineyi bu defa NODE olarak, yani HUB’ ın emirlerine hazır, selenium scriptlerini çalıştıracak bir asker olarak ayağa kaldırmış oldunuz. Yine onay mesajı orak HUB üzerinde bu bilgiyi aşağıdaki biçimde görebilirsiniz.:
INFO - Registered a node http://192.168.1.23:5555
Hatta yine http://localhost:4444/grid/console yazdığınızda eklediğiniz tüm uzak düğümleri ve yüklü tarayıcı versiyonlarını görmeniz mümkündür.
Harika aslında gereken tüm önemli adımları tamamladınız. Son WebDriver kullanan bir C# projesinde Selenium scriptini aynı makine yerine uzak düğümlere yollamak için yapmanız gereken:
IWebDriver driver = new FirefoxDriver();
Satırınızı :
DesiredCapabilities capa = DesiredCapabilities.Firefox(); IWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), capa);
İle değiştirmek. Bu durumda istekleri Hub’a yönlendirmiş oldunuz. HUB zaten NODE olarak eklenmiş olan düğümleri biliyor ve istekleri onlara yönlendiriyor olacak. Birden fazla düğüm eklediğinizde DesiredCapabilities ile biraz oynayıp isteği doğru düğümlere yönlendirmek te mümkün. Bunu sizlere bırakıyorum. Unutmadan sorun yaşarsanız firewall ayarlarınızı kontrol etmeyi, ayrıca 4444 ve 5555 portlarının (HUB-NODE varsayılan portları) engellenmediğinden emin olmanızı öneririm.
Sizlerinde görebileceği üzere, bu aralar Parallel and Distributed Computing başlıkları altında sıklıkla kullandığım MongoDB, Hive, NoSQL, Hadoop, Spark gibi araçlara kafayı fazlaca takmış ve özellikle Spark’a daha çok yer ayırmış durumdayım. Söz Selenium yazılarımı artıracağım
Görüşmek Üzere











