Görünmeyen Kod Kılavuz İster

Full width home advertisement

Post Page Advertisement [Top]

Selenium Nedir?


Nedir?

Selenium, browserlar için geliştirilmiş bir otomasyon aracıdır. Bu araç ile istediğiniz web sayfasını açıp web sayfasında istediğiniz işlemi yapabilirsiniz. Genellikle test işlemleri için kullanılır.

İstediğiniz işlemi yapabilirsiniz derken kastım; web sayfasını açmak, web sayfasında ki buttonları ve inputları doldurmak gibi işlemleri yapabilirsiniz. Zaten selenium genellikle web sayfalarında ki inputları, buttonları vb. test etmek için kullanılıyor.

Selenium'u bir dilde değil 6 farklı dilde kullanabilirsiniz. Bu diller: Java, Python, C#, Ruby, JavaScript ve Kotlin'dir. Ben bu yazımda sizlere Java ve Python için nasıl kullanabileceğinizi anlatacağım.

Selenium'u kendi IDE'sinden veya WebDriver kullanarak çalıştırabilirsiniz. Aralarında ki fark şöyledir: Selenium IDE browser kullanarak test işlemi gerçekleştirmenizi sağlar ve bir program şeklindedir. WebDriver yöntemi ise hazır veya kendi hazırladığımız web projelerini test etmek için kullanılır ve bir arayüze sahip değildir sadece kullandığınız browser açılır. Sizlere bu yazımda benim de sıklıkla kullandığım WebDriver yöntemini açıklayacağım.

Daha dürüst olmak gerekirse Selenium IDE'yi fazla kullanmadım ve mantığını da fazla bilmiyorum. Ben genellikle test otomasyonu yazarken WebDriver kullanırım.

Ama kısaca bir google search işleminin sonucunda söyleyebilirim ki Selenium IDE bir tarayıcı eklentisi olarak geliyor ve eklenti üzerinden komutlar aracılığı ile test işlemlerini gerçekleştiriyorsunuz. Zaten kendi web sayfasında şöyle açıklıyor:

"Selenium test 'vakalarınızı'! geliştirmek için kullandığınız araçtır. Kullanımı kolay bir Chrome ve Firefox eklentisidir ve genellikle test senaryoları geliştirmenin en etkili yoludur. Selenium komutlarını kullanarak o öğenin bağlamı tarafından tanımlanan parametrelerle kullanıcıların tarayıcıdaki işlemlerini sizin için kaydeder. Bu sadece zaman tasarrufu sağlamakla kalmaz, aynı zamanda Selenium script söz dizimini öğrenmenin de mükemmel bir yoludur."

Eğer diğer dillerde de kullanmak istiyorsanız bu adresi ziyaret ederek nasıl kullanıldığını görebilirsiniz. Zaten ben de göstereceğim örnekleri bu kaynak sayesinde gösteriyorum. Şimdi isterseniz nasıl kullanabileceğinizi anlatayım.

Nasıl Kullanılır?

İlk önce aşağıda ki adreslerden kullandığınız tarayıcıya göre bir webdriver indiriyorsunuz.





Webdriver'i indirdikten sonra proje dizininize atıyorsunuz. Şimdi ise test otomasyonunu yazmaya başlayalım.

Python

İlk önce sisteminize Selenium kütüphanesini indirmeniz gerekmekte. Bunun için aşağıda ki komutu kullanabilirsiniz.

$ pip3 install selenium

Selenium'u indirdikten sonra proje dosyanıza selenium üzerinden WebDriver kütüphanesini import etmeniz gerekmektedir. Bunun için ise python dosyanızın üst kısımlarına:

from selenium import webdriver

İfadesini ekliyorsunuz.

Ardından ise indirdiğimiz Webdriver'i tanımlıyoruz.

# Mozilla Firefox İçin

path = "./geckodriver"
browser = webdriver.Mozilla(executable_path=path)

# Chrome için

path = "./chromedriver"
browser = webdriver.Chrome(executable_path=path)

Şimdi artık tüm işlemlerimizi 'browser' değişkeni üzerinden yapacağız. İlk önce tarayıcı üzerinden herhangi bir web sitesi açalım. Bunun için 'get()' fonksiyonunu kullanacağız. Get fonksiyonu hiçbir işlem yapmadan sadece web sayfasını açmak için kullanılır.

browser.get("https://google.com")

İfadesini yazdıktan sonra dosyanızı kaydedip çalıştırdıktan sonra göreceksiniz ki tarayıcınızda belirttiğiniz adres açılmış bir şekilde açılacaktır.

Şimdi ise açtığımız sayfada bir yere tıklama işlemini yapalım. Tıklama işlemi için 'click()' fonksiyonu kullanılır click fonksiyonunu kullanmadan önce hangi öğe üzernde işlem yapmamız gerektiğini seçmemiz gerekiyor.

Öğe seçmek için çeşitli yöntemler vardır, sayfanın HTML kodlarına erişebilmemiz gerekir. Eğer kendi projenizi test ediyorsanız zaten sayfa elemanlarını biliyorsunuzdur. Ama eğer başka bir web sitesini test ediyorsanız tarayıcınızda ki denetle veya öğeyi incele özelliğini kullanabilirsiniz. Yaklaşık 8 tane öğe seçmek için kullanılabilecek fonksiyon vardır fakat bu yazım ders niteliğinde olmadığı için sizlere 6 tanesini anlatacağım. Bunlar aşağıda ki gibi kullanılırlar.
  • find_element_by_id()
  • find_element_by_class_name()
  • find_element_by_name()
  • find_element_by_tag_name()
  • find_element_by_link_text()
  • find_element_by_xpath()  

Seçmek istediğiniz öğenin özelliğine göre('class,id') yukarıda ki öğelerden bir tanesini seçebilirsiniz. Mesela class'ı btn olan bir button var ve biz bu buttona erişebilmek için aşağıda ki gibi bir yöntem izlememiz gerekiyor.

button = browser.find_element_by_class_name("btn")

Gözünüze garip gelebilecek iki tane fonksiyon yazılı yukarıda. Bunlar: 'find_element_by_link_text' ve 'find_element_by_xpath' bunlar göze garip gelebilir ama kullanımı gayet kolaydır. İlk önce 'find_element_by_link_text'in anlatımından başlayayım. Mesela bir tane link oluşturdunuz.

<a href="#">LinkYazisi</a>

Ardından ise içerisine bir kelime yazdınız. 'find_element_by_link_text' fonksiyonunu kullandığınız zaman Link'e verdiğiniz yazıyı seçmeniz gerekir.

link = find_element_by_link_text("LinkYazisi")

Şeklinde kullanıyorsunuz. Xpath seçeneği de kolaydır. Erişmek istediğiniz öğenin xpath'ını yazmanız gerekir ama eğer bilmiyorsanız kolay bir yolu vardır. Seçmek istediğiniz öğenin üzerine gelip öğeyi denetle'ye tıklayın. Ardından ise seçili öğenin üzerine sağ tıklayıp copy kısmından xpath seçeneğine gelin.


Ardından ise fonksiyon içerisin parametre olarak xpath'ı yapıştırın.

xpathsecimi = browser.find_element_by_xpath("/html/body/div/div[3]/form/div[2]/div[1]/div[1]/div/div[2]/input")

Bu şekilde 'find_element_by_xpath' seçeneğini de kullanabilirsiniz.

Şimdi konuyu fazla saptırmadan sizlere click() fonksiyonunu nasıl kullanabileceğinizi anlatayım. Bir öğe seçiyorsunuz ve ardından ise click fonksiyonunu aşağıda ki gibi kullanıyorsunuz.

btn = browser.find_element_by_class_name("btn")
btn.click()

şeklinde istediğiniz öğeye tıklama işlemini yapabilirsiniz. İsterseniz şimdi de seçili bir input'a metin yazdıralım. Bu işlem için 'send_keys' fonksiyonunu kullanabilirsiniz. click() fonksiyonunda olduğu gibi bir öğe seçiyorsunuz ve ardından da send_keys fonksiyonunu kullanabilirsiniz.

searchinput = browser.find_element_by_xpath("/html/body/div/div[3]/form/div[2]/div[1]/div[1]/div/div[2]/input")
searchinput.click()
searchinput.send_keys("KilavuzKod")

Kullanımı bu şekildedir. Evet arkadaşlar Python için selenium kullanımı bu şekildedir. Daha çok örnek için kendi web adresini ziyaret edebilirsiniz.

Java

Selenium'u kullanabilmek için aşağıda ki kütüphaneleri import etmeniz gerekir.

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.mozilla.MozillaDriver;
import org.openqa.selenium.support.ui.WebDriverWait;

Ardından ise webdriver'ı tanıtmamız gerekir.

# Chrome
System.setProperty("webdriver.chrome.driver", "./chromedriver");
WebDriver browser = new ChromeDriver();

# Mozilla

System.setProperty("webdriver.mozilla.driver", "./geckodriver");
WebDriver browser = new MozillaDriver();

Tanıttıktan sonra artık işlemlerimize başlayabiliriz. Java'da Python'da ki gibi nesne seçme işlemi kolay değildir. Evet  elemanlar aynı ama yöntem farklıdır. Mesela tekrardan Google'a gidelim ve basit bir search işlemi yaptıralım.

browser.get("https://google.com");
browser.findElement(By.xpath("/html/body/div/div[3]/form/div[2]/div[1]/div[1]/div/div[2]/input")).sendKeys("KilavuzKod");
browser.findElement(By.xpath("/html/body/div/div[3]/form/div[2]/div[1]/div[2]/div[2]/div[2]/center/input[1]")).click();

Dosyayı çalıştırdığınız zaman Google'da 'KilavuzKod' kelimesini arayacaktır.

Kaynak

Wikipedia
Selenium Web Site
Devnot

Hiç yorum yok:

Yorum Gönder

Bottom Ad [Post Page]