Selenium test framework nedir? Java kod örnekleri ile mülakat soruları ve cevapları



Selenium, genellikle web uygulamalarını otomatikleştirme amacıyla kullanılan bir test çerçevesidir. Çeşitli tarayıcılar ve işletim sistemleri üzerinde testlerin çalıştırılmasını destekler. Selenium, Java, C#, Python, Ruby, JavaScript ve Kotlin gibi bir dizi popüler programlama dilinde test yazmanızı sağlar.


Selenium aslında birkaç bileşenden oluşur:


Selenium WebDriver: Selenium WebDriver, kullanıcıların çeşitli web tarayıcıları üzerinde doğrudan testler çalıştırmasına izin veren bir araçtır. Bir tarayıcıyı otomatik olarak kontrol eder ve kullanıcı eylemlerini simüle eder - tıklama, form doldurma, JavaScript çalıştırma gibi.


Selenium Grid: Selenium Grid, farklı tarayıcılar ve işletim sistemleri üzerinde aynı anda testler çalıştırmayı mümkün kılar. Bu, özellikle birden çok platformda çalışması gereken uygulamalar için çok yararlıdır.


Selenium IDE (Integrated Development Environment): Selenium IDE, tarayıcı eylemlerini yakalamak ve onları daha sonra tekrar oynatmak için kullanılan bir tarayıcı eklentisidir. Ayrıca test durumlarını oluşturmanıza ve düzenlemenize olanak sağlar.


Selenium Remote Control (RC): Selenium RC, önceden var olan Selenium API'sinin bir sürümüdür ve genellikle artık kullanılmaz. Selenium WebDriver'in gelmesiyle Selenium RC'nin kullanımı büyük ölçüde azaldı.


Bu bileşenlerin her biri, uygulamanızın farklı yönlerini test etmek için kullanılır ve birlikte kullanıldığında, genellikle geliştiricilerin ve QA mühendislerinin bir uygulamanın her yönünü kapsamlı bir şekilde test etmelerini sağlarlar. Bunun yanında, Selenium WebDriver ile Page Object Model (POM) gibi tasarım desenlerini kullanarak kodunuzun bakımını kolaylaştırabilir ve testlerinizi daha verimli hale getirebilirsiniz.


Her şeyden önce, Selenium açık kaynaklıdır. Bu, kullanıcıların çerçevenin kaynak kodunu görüntülemesine, değiştirmesine ve hatta kendi ihtiyaçlarına göre geliştirmesine olanak sağlar. Ayrıca büyük ve aktif bir topluluk tarafından desteklenir, bu da genellikle sorunlarınızla ilgili yardım alabileceğiniz anlamına gelir. Eğer devam etmemi istersen daha da derine inebiliriz.


Selenium testlerinin yaratılması ve çalıştırılması, bir web uygulamasının farklı yönlerinin nasıl işlediğini anlamak için çok önemlidir. Selenium WebDriver, web uygulaması ile tarayıcı arasında bir arayüz görevi görerek, kullanıcı etkileşimlerini simüle eder ve sonuçları toplar. Tarayıcıyı otomatik olarak kontrol eder ve kullanıcı etkileşimlerini simüle eder.


WebDriver, genellikle test durumları oluşturmak ve testleri çalıştırmak için bir test çerçevesi ile birlikte kullanılır. Popüler çerçeveler arasında JUnit (Java için), NUnit (.NET için), pytest (Python için) ve RSpec (Ruby için) bulunur.


Bir Selenium testi genellikle aşağıdaki adımları içerir:


Tarayıcı başlatma: WebDriver, belirli bir tarayıcı örneğini başlatır (Chrome, Firefox, Safari, vb.).


Web sayfasına gitme: WebDriver, tarayıcıyı belirli bir URL'ye yönlendirir.


Elementleri bulma: WebDriver, DOM (Document Object Model) üzerinde belirli elementleri (butonlar, metin kutuları, vb.) bulabilir.


Eylemleri gerçekleştirme: WebDriver, belirli eylemleri gerçekleştirir (tıklama, metin girişi, JavaScript işlemi, vb.).


Durumu doğrulama: WebDriver, son durumu kontrol eder ve beklenen sonuçla karşılaştırır. Bu genellikle bir "iddia" (assertion) olarak adlandırılır.


Tarayıcıyı kapatma: WebDriver, tarayıcı örneğini kapatır.


Selenium Grid, birden çok tarayıcı ve işletim sistemi üzerinde testlerin paralel olarak çalıştırılmasını sağlar. Bu, özellikle büyük test süitleri için zaman kazandırır ve uygulamanın farklı platformlarda nasıl performans gösterdiğini daha hızlı bir şekilde anlamanızı sağlar.


Selenium testleri genellikle bir sürekli entegrasyon/teslimat pipeline'ının bir parçasıdır. Yani, kodun her değişiklikte otomatik olarak test edilmesi ve potansiyel hataların erken tespit edilmesi sağlanır. Jenkins, Travis CI ve CircleCI gibi araçlar genellikle bu amaçla kullanılır.





Bununla birlikte, Selenium'un bazı sınırlılıkları da vardır. Örneğin, mobil uygulamaları veya masaüstü uygulamalarını test etmek için tasarlanmamıştır (bunun için Appium veya WinAppDriver gibi araçlara bakabilirsiniz). Ayrıca, genellikle dinamik ve karmaşık modern JavaScript uygulamaları (React, Angular, Vue.js) ile başa çıkmakta zorlanabilir.

Selenium test sürecinde daha fazla derinlemesine bakalım. Öncelikle Selenium testlerini nasıl yazdığımızı anlamak önemlidir. Yukarıda belirttiğim gibi, Selenium birkaç farklı dilde yazılmış testlerle çalışabilir. İşte genel bir Selenium WebDriver testi örneği Python dilinde:


python

Copy code

from selenium import webdriver

from selenium.webdriver.common.keys import Keys


driver = webdriver.Firefox()  # Firefox tarayıcısını başlatır


driver.get("http://www.python.org")  # Python.org'a gider

assert "Python" in driver.title  # Başlıkta "Python" olduğunu doğrular


elem = driver.find_element_by_name("q")  # Arama kutusunu bulur

elem.clear()  # Arama kutusunu temizler


elem.send_keys("pycon")  # Arama kutusuna "pycon" yazar

elem.send_keys(Keys.RETURN)  # Enter'a basar


assert "No results found." not in driver.page_source  # Arama sonucunu doğrular


driver.close()  # Tarayıcıyı kapatır

Bu basit test, Python.org'u ziyaret eder, arama kutusuna "pycon" yazar ve ardından arama sonucunu kontrol eder.


Testleriniz daha karmaşık hale geldikçe, testlerinizi organize etmek için teknikler ve yaklaşımlar kullanmanız önemli hale gelir. Örneğin, Page Object Model (POM) tasarım deseni, test kodunuzu daha düzenli, daha bakımı kolay ve daha tekrar kullanılabilir hale getirir. POM'de, her web sayfası için bir "page object" oluşturulur. Her page object, o sayfadaki belirli elementlere ve bu elementlerle etkileşimlerine yönelik metodlara sahip bir sınıftır.


Selenium Grid ile ilgili olarak, bu özellik genellikle büyük test süitlerinin daha hızlı bir şekilde tamamlanabilmesi için kullanılır. Selenium Grid, testleri aynı anda birden çok tarayıcı ve işletim sistemi üzerinde çalıştırabilen bir sunucu olarak görev yapar. Bu, özellikle birden çok tarayıcı ve işletim sistemi üzerinde kapsamlı test yapmanız gereken durumlarda yararlıdır.


Selenium, bir test çerçevesi olarak değil, bir test aracı olarak en iyi şekilde çalışır. Bu, genellikle test senaryolarınızı yönetmek ve organize etmek için başka bir test çerçevesiyle (örneğin Python'da pytest veya Java'da TestNG) birlikte kullanılması gerektiği anlamına gelir. Bu test çerçeveleri, testlerinizi gruplandırmanıza, tekrar tekrar çalıştırmanıza ve sonuçları toplamanıza yardımcı olabilir.


Son olarak, Selenium'un kapasitesini ve özelliklerini genişletmek için birçok eklenti ve kütüphane mevcuttur. Örneğin, Selenium WebDriver API'si genellikle web elementlerini bulmak için CSS veya XPath seçicilerini kullanır, ancak bu bazen karmaşık ve hata yapma olasılığı yüksektir. Bu sorunu çözmek için, daha kullanıcı dostu bir API sağlayan ve elementlerin daha kolay bulunmasına yardımcı olan bir dizi yardımcı kütüphane mevcuttur.


Bir sonraki adım, belki de Selenium testlerinizi nasıl yazacağınıza dair daha detaylı bilgi almak veya belirli bir konuyu daha ayrıntılı olarak incelemek olabilir. Daha fazla bilgi almak isterseniz, belirli bir konuda daha fazla bilgi talep edebilirsiniz.


Yukarıda belirtilenlerin ışığında, Selenium'un nasıl daha etkin bir şekilde kullanılacağına dair bazı ipuçları ve en iyi uygulamalarla ilerleyelim.


1. Dinamik Elementlerle Başa Çıkmak:


Modern web uygulamalarında, dinamik içerik ve AJAX çağrıları yaygındır. Bir elementin sayfada görünmesi için beklemek veya bir AJAX çağrısının tamamlanmasını beklemek gerekebilir. Selenium WebDriver'da bunu başarmak için "explicit waits" ve "implicit waits" adı verilen iki yöntem vardır.


Bir explicit wait, WebDriver'ın belirli bir koşulun gerçekleşmesini belirli bir süre beklemesini sağlar. Örneğin, bir elementin sayfada görünmesini bekleyebilirsiniz.


Bir implicit wait ise WebDriver'ın belirli bir süre boyunca bir elementi bulmayı denemesini sağlar. Bu süre zarfında WebDriver, belirli bir süre boyunca belirli bir elementi bulmak için aramaya devam eder.


2. CSS Seçicileri ve XPath Kullanımı:


Web elementlerini bulmak için Selenium, CSS Seçicileri ve XPath ifadeleri kullanır. CSS Seçicileri genellikle daha hızlı ve daha kolay okunurken, XPath ifadeleri daha karmaşık sorguları destekler. İhtiyaçlarınıza bağlı olarak her ikisini de kullanabilirsiniz, ancak genellikle CSS Seçicileri daha yaygın olarak kullanılır.


3. Page Object Model (POM):


Page Object Model (POM), Selenium testlerini organize etmek ve yönetmek için yaygın bir desendir. Bu modelde, her web sayfası için bir sınıf oluşturursunuz ve bu sınıf, o sayfadaki belirli web elementlerine yönelik metotları içerir. Bu, test kodunuzu düzenli ve tekrar kullanılabilir hale getirir ve bakımı kolaylaştırır.


4. Test Sonuçlarının Raporlanması:


Testlerinizi çalıştırdıktan sonra, sonuçları analiz etmek önemlidir. Selenium'un kendisi bir raporlama aracı olarak hizmet etmez, ancak başka araçlarla birlikte kullanılabilir. Örneğin, Allure, ExtentReports veya ReportNG gibi üçüncü taraf kütüphaneler, detaylı ve anlaşılır test raporları oluşturmanıza yardımcı olabilir.


5. Sürekli Entegrasyon ile Selenium:


Selenium testleri genellikle bir sürekli entegrasyon (CI) pipeline'ının bir parçasıdır. Bu, her kod değişikliğinde veya belirli bir zaman aralığında testlerin otomatik olarak çalıştırılması anlamına gelir. Jenkins, Travis CI, CircleCI ve GitHub Actions gibi araçlar bu amaçla kullanılabilir.


Selenium'un kullanımı geniş ve çeşitlidir, ve bu yüzden başarılı bir şekilde kullanılması için birçok farklı yaklaşım ve teknik vardır. Yukarıda belirtilenler sadece bazı örneklerdir. Eğer belirli bir konu üzerinde daha fazla bilgi almak isterseniz, lütfen belirtin.


Java kod örnekleri ile beraber Selenium mülakat soruları ve cevapları


Selenium ile ilgili sıkça sorulan bazı mülakat soruları ve cevapları aşağıda verilmiştir. Bu soruların cevaplarına ilişkin Java kod örnekleri de dahil edilmiştir.


1. Soru: Selenium nedir?


Cevap: Selenium, genellikle web uygulamalarını otomatikleştirme amacıyla kullanılan popüler bir açık kaynaklı test aracıdır. Selenium'un dört bileşeni vardır: Selenium IDE, Selenium RC, Selenium WebDriver ve Selenium Grid.


2. Soru: Selenium WebDriver ve Selenium RC arasındaki fark nedir?


Cevap: Selenium RC, Selenium'un eski bir sürümüdür ve bir sunucu aracılığıyla çalışır. Selenium WebDriver, doğrudan tarayıcıya komut gönderen daha yeni ve daha hızlı bir araçtır. WebDriver'ın API'si de daha kolaydır ve modern tarayıcılarla daha iyi uyumludur.



3. Soru: Bir WebElement'i nasıl bulursunuz?


Cevap: Selenium WebDriver, bir WebElement'i bulmak için çeşitli yöntemler sunar. Bu yöntemlerden bazıları findElement(By.id("id")), findElement(By.name("name")), findElement(By.className("class")) ve findElement(By.cssSelector("cssSelector")) yöntemleridir. Aşağıda bir örnek gösterilmiştir:


java

Copy code

WebDriver driver = new FirefoxDriver();

driver.get("http://www.example.com");

WebElement element = driver.findElement(By.id("exampleId"));

4. Soru: Explicit wait ve Implicit wait arasındaki fark nedir?


Cevap: Explicit wait, belirli bir koşulun karşılanmasını belirli bir süre boyunca bekler. Örneğin, bir elementin görünür olmasını bekleyebilir. Implicit wait, belirli bir süre boyunca bir elementi bulmayı denemeye devam eder.


Explicit wait örneği:


java

Copy code

WebDriverWait wait = new WebDriverWait(driver, 20);

WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("exampleId")));

Implicit wait örneği:


java

Copy code

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

WebElement element = driver.findElement(By.id("exampleId"));

5. Soru: Bir dropdown menüsünden nasıl bir seçim yaparsınız?


Cevap: Selenium WebDriver, Select sınıfını kullanarak dropdown menülerle etkileşim kurmamızı sağlar. Örneğin:


java

Copy code

WebElement dropdown = driver.findElement(By.id("dropdownId"));

Select select = new Select(dropdown);

select.selectByVisibleText("Option1");

6. Soru: Bir testin başarısız olduğunu nasıl kontrol edersiniz?


Cevap: Selenium WebDriver, bir testin başarısız olup olmadığını kontrol etmek için 'assertions' (doğrulamalar) kullanır. Bir assertion, belirli bir durumun doğru olup olmadığını kontrol eder. Örneğin, JUnit framework'ünün assertEquals() metodu kullanılabilir:


java

Copy code

String expectedTitle = "Example Title";

String actualTitle = driver.getTitle();

assertEquals(expectedTitle, actualTitle);

7. Soru: Sayfanın yüklenmesini nasıl beklersiniz?


Cevap: Sayfanın yüklenmesini beklemek için driver.manage().timeouts().pageLoadTimeout() metodunu kullanabilirsiniz. Örneğin:


java

Copy code

driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);


8. Soru: Alert/Popup pencereleriyle nasıl başa çıkarız?


Cevap: Alert/Popup pencereleriyle başa çıkmak için Selenium WebDriver, Alert sınıfını kullanır. Aşağıda bir örneğini görebilirsiniz:


java

Copy code

// Alert'e geçiş yapar

Alert alert = driver.switchTo().alert();


// Alert'teki mesajı alır

String alertMessage = alert.getText();


// Alert'i kabul eder (OK butonuna basar)

alert.accept();


// veya Alert'i reddeder (Cancel butonuna basar)

alert.dismiss();

9. Soru: Bir elementin var olup olmadığını nasıl kontrol edersiniz?


Cevap: Bir elementin var olup olmadığını kontrol etmek için, öncelikle findElement() metodunu kullanırsınız ve ardından yakalanan NoSuchElementException hatasını kontrol edersiniz. Örneğin:


java

Copy code

public boolean isElementPresent(By locator) {

    try {

        driver.findElement(locator);

        return true;

    } catch (NoSuchElementException e) {

        return false;

    }

}

10. Soru: Çerçeveler (frames) arasında nasıl geçiş yapılır?


Cevap: Selenium WebDriver, switchTo().frame() metodunu kullanarak çerçeveler arasında geçiş yapmanızı sağlar. Frame'ye index, isim veya WebElement olarak referans verilebilir. Örneğin:


java

Copy code

// index ile

driver.switchTo().frame(0);


// isim ile

driver.switchTo().frame("frameName");


// WebElement ile

WebElement frameElement = driver.findElement(By.id("frameId"));

driver.switchTo().frame(frameElement);

11. Soru: WebDriver'da birden çok pencere veya sekmeyle nasıl başa çıkarsınız?


Cevap: WebDriver, driver.getWindowHandles() ve driver.switchTo().window() metodlarıyla birden çok pencere veya sekmeyle başa çıkmayı sağlar. İşte bir örneği:


java

Copy code

// Tüm pencerelerin veya sekmelerin tanıtıcılarını alır

Set<String> handles = driver.getWindowHandles();


for(String handle : handles) {

    // Her bir pencereye veya sekmeye geçiş yapar

    driver.switchTo().window(handle);

}

12. Soru: Bir test senaryosunu nasıl parametrize edersiniz?


Cevap: TestNG veya JUnit gibi bir test framework'ü kullanarak bir test senaryosunu parametrize edebilirsiniz. TestNG'de @Parameters veya @DataProvider anotasyonları veya JUnit'te @Parameterized anotasyonu kullanılabilir. TestNG için bir örnek:


java

Copy code

@Test(dataProvider = "loginData")

public void testLogin(String username, String password) {

    driver.findElement(By.id("username")).sendKeys(username);

    driver.findElement(By.id("password")).sendKeys(password);

    // Login işlemini tamamlayın ve doğrulama yapın...

}


@DataProvider(name = "loginData")

public Object[][] getData() {

    return new Object[][]{

        {"user1", "pass1"},

        {"user2", "pass2"},

        {"user3", "pass3"}

    };

}

13. Soru: Selenium Grid nedir ve ne için kullanılır?


Cevap: Selenium Grid, aynı anda birden çok tarayıcı örneğinde testler çalıştırmak için kullanılan bir araçtır. Bu, paralel test yapmayı mümkün kılar ve böylece test süresini önemli ölçüde azaltır. Selenium Grid, ayrıca farklı tarayıcı, işletim sistemi ve makine kombinasyonları arasında dağıtılmış testler yapmayı mümkün kılar.


14. Soru: WebElement'i nasıl doğrularsınız?


Cevap: Bir WebElement'in var olup olmadığını, görünür olup olmadığını ve belirli bir durumda olup olmadığını doğrulamak için Selenium'un çeşitli metotlarını kullanabilirsiniz. Örneğin:


java

Copy code

WebElement element = driver.findElement(By.id("exampleId"));


// Elementin var olup olmadığını kontrol eder

boolean isPresent = element != null;


// Elementin görünür olup olmadığını kontrol eder

boolean isDisplayed = element.isDisplayed();


// Elementin belirli bir durumda olup olmadığını kontrol eder (örneğin, seçili olup olmadığını)

boolean isSelected = element.isSelected();

15. Soru: Birden çok testi nasıl organize edersiniz?


Cevap: Birden çok testi organize etmek için test suite'lerini kullanabilirsiniz. TestNG veya JUnit gibi test framework'leri, testleri gruplamak ve bir test suite olarak çalıştırmak için araçlar sağlar. Örneğin, TestNG'de bir test suite'i XML dosyası kullanarak tanımlayabilir ve ardından bu dosyayı kullanarak tüm suite'i çalıştırabilirsiniz.


16. Soru: Selenium'da bir tarayıcı oturumunu nasıl başlatırsınız ve nasıl sonlandırırsınız?


Cevap: Selenium'da bir tarayıcı oturumu, WebDriver örneği oluşturularak başlatılır. Oturumun sonlandırılması ise driver.quit() veya driver.close() metodu ile yapılır. Örneğin:


java

Copy code

WebDriver driver = new ChromeDriver(); // Oturum başlatılır


// Some tests...


driver.quit(); // Oturum sonlandırılır

17. Soru: TestNG nedir ve Selenium ile nasıl kullanılır?


Cevap: TestNG, Java'da bir test framework'üdür ve genellikle Selenium ile birlikte kullanılır. TestNG, testleri gruplama, paralel test yapma, testler için veri sağlama (data-driven testing) gibi özellikler sunar. TestNG, Selenium testlerini daha yapılandırılmış ve esnek bir şekilde oluşturmayı mümkün kılar.


TestNG örneği:


java

Copy code

public class ExampleTest {

    private WebDriver driver;


    @BeforeMethod

    public void setUp() {

        driver = new ChromeDriver();

    }


    @Test

    public void testExample() {

        driver.get("http://www.example.com");

        // Test işlemleri...

    }


    @AfterMethod

    public void tearDown() {

        driver.quit();

    }

}


18. Soru: JavaScript ile çalışmak için Selenium'da nasıl bir yaklaşım kullanılır?


Cevap: Selenium WebDriver, JavaScript ile çalışmak için JavascriptExecutor interface'ini kullanır. Bu, bir WebDriver örneğini JavaScript kodunu çalıştırabilecek bir şekilde dönüştürür. İşte bir örneği:


java

Copy code

JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript("document.getElementById('example').click();");

19. Soru: Selenium'da, bir elementin belirli bir özelliğini nasıl alırsınız?


Cevap: Selenium WebDriver'da, bir elementin belirli bir özelliğini getAttribute() metodu kullanarak alabilirsiniz. Örneğin, bir input elementinin değerini almak için:


java

Copy code

WebElement input = driver.findElement(By.id("inputId"));

String value = input.getAttribute("value");

20. Soru: Bir sayfanın title'ını veya URL'sini nasıl alırsınız?


Cevap: Bir sayfanın title'ını veya URL'sini WebDriver'ın getTitle() ve getCurrentUrl() metodları kullanarak alabilirsiniz. İşte bir örneği:


java

Copy code

String title = driver.getTitle();

String url = driver.getCurrentUrl();

21. Soru: Selenium WebDriver'da scroll işlemi nasıl gerçekleştirilir?


Cevap: Selenium WebDriver'da, sayfa içinde scroll işlemi JavascriptExecutor kullanılarak gerçekleştirilir. İşte bir örneği:


java

Copy code

JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript("window.scrollBy(0,500)"); // 500 piksel aşağıya kaydırır

22. Soru: Selenium'da negatif test senaryolarını nasıl yürütürsünüz?


Cevap: Negatif test senaryoları, genellikle bir uygulamanın belirli bir işlevinin yanlış veya beklenmeyen bir girişle nasıl başa çıktığını test etmek için kullanılır. Selenium WebDriver'da, bir assertion (doğrulama) kullanarak negatif bir test senaryosunu yürütebilirsiniz. İşte bir örneği:


java

Copy code

try {

    driver.findElement(By.id("nonexistentId"));

    fail("Expected NoSuchElementException to be thrown");

} catch (NoSuchElementException e) {

    // Test passed

}

23. Soru: Selenium WebDriver'da cookie'leri nasıl kullanırsınız?


Cevap: Selenium WebDriver, driver.manage().getCookies() metodu ile mevcut cookie'leri almayı, driver.manage().addCookie(Cookie cookie) ile bir cookie eklemeyi, driver.manage().deleteCookie(Cookie cookie) ile bir cookie silmeyi ve driver.manage().deleteAllCookies() ile tüm cookie'leri silmeyi sağlar.


24. Soru: Selenium'da bir dropdown menüden seçim yapmak için hangi metotları kullanırsınız?


Cevap: Selenium'da, bir dropdown menüden seçim yapmak için Select sınıfını kullanabilirsiniz. Select sınıfı, selectByVisibleText, selectByValue ve selectByIndex gibi metodları sunar. Örneğin:


java

Copy code

Select dropdown = new Select(driver.findElement(By.id("dropdownId")));

dropdown.selectByVisibleText("Option1");

25. Soru: Sayfada bir elementin yüklenmesini nasıl beklersiniz?


Cevap: Selenium'da bir elementin yüklenmesini beklemek için genellikle "explicit wait" ve "implicit wait" olmak üzere iki yaklaşım kullanılır.


"Implicit wait", driver'ın belirtilen süre boyunca bir elementin mevcut olmasını beklemesi için kullanılır:


java

Copy code

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

"Explicit wait" ise belirli bir durumun gerçekleşmesini bekler. Örneğin, bir elementin görünür olmasını beklemek için:


java

Copy code

WebDriverWait wait = new WebDriverWait(driver, 10);

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("elementId")));

26. Soru: Bir web sayfasına nasıl geçiş yaparsınız?


Cevap: Bir web sayfasına geçiş yapmak için, driver.get() metodu kullanılır. Metoda, açmak istediğiniz web sayfasının URL'si argüman olarak verilir. Örneğin:


java

Copy code

driver.get("http://www.example.com");

27. Soru: Sayfa kaynak kodunu nasıl alırsınız?


Cevap: Bir sayfanın kaynak kodunu almak için driver.getPageSource() metodu kullanılır. Örneğin:


java

Copy code

String source = driver.getPageSource();

28. Soru: WebElement'in CSS özelliklerini nasıl alırsınız?


Cevap: Bir WebElement'in CSS özelliklerini almak için getCssValue() metodu kullanılır. Metoda, almak istediğiniz CSS özelliğinin adı argüman olarak verilir. Örneğin:


java

Copy code

WebElement element = driver.findElement(By.id("elementId"));

String color = element.getCssValue("color");

29. Soru: WebElement'e tıklayarak veya klavye tuşları ile etkileşimde bulunmak için hangi metotları kullanırsınız?


Cevap: WebElement'lere tıklamak için click(), klavye tuşları ile etkileşime geçmek için sendKeys() metotları kullanılır. Örneğin:


java

Copy code

WebElement button = driver.findElement(By.id("buttonId"));

button.click();


WebElement textbox = driver.findElement(By.id("textboxId"));

textbox.sendKeys("Some text");

Bu örnekler, Selenium mülakatlarında karşılaşılabilecek çeşitli konuları kapsar. Başka bir konuda daha fazla bilgi almak isterseniz, lütfen belirtin.


30. Soru: WebDriver'ın "navigate" metotları nelerdir ve ne için kullanılırlar?


Cevap: WebDriver'ın navigate() metodu, bir dizi navigasyon metotlarına erişim sağlar. Bu metotlar:


to(String url): Belirtilen URL'ye tarayıcıda bir geçiş yapar.

back(): Tarayıcının 'geri' düğmesine basar.

forward(): Tarayıcının 'ileri' düğmesine basar.

refresh(): Aktif web sayfasını yeniler.

Örneğin:


java

Copy code

driver.navigate().to("http://www.example.com");

driver.navigate().back();

driver.navigate().forward();

driver.navigate().refresh();

31. Soru: Action Class nedir ve nasıl kullanılır?


Cevap: Selenium'daki Action Class, daha karmaşık kullanıcı etkileşimlerini (mouse hover, drag and drop, vb.) simüle etmek için kullanılır. Örneğin, bir element üzerinde mouse hover işlemi yapmak için:


java

Copy code

Actions actions = new Actions(driver);

WebElement element = driver.findElement(By.id("elementId"));

actions.moveToElement(element).perform();

32. Soru: findElement ve findElements metotları arasındaki fark nedir?


Cevap: findElement metodu, belirtilen koşulları karşılayan ilk WebElement'i döndürür. Eğer böyle bir element bulunamazsa, NoSuchElementException hatası fırlatır.


findElements metodu ise, belirtilen koşulları karşılayan tüm WebElement'leri bir liste olarak döndürür. Eğer böyle bir element bulunamazsa, boş bir liste döndürür.


33. Soru: Selenium'da bir alert dialog ile nasıl etkileşime geçilir?


Cevap: Selenium'da bir alert dialog ile etkileşime geçmek için Alert interface'i kullanılır. Alert interface'i, alert dialog ile etkileşime geçmeyi sağlayan accept(), dismiss(), getText() ve sendKeys(String stringToSend) metotlarını sunar. Örneğin:


java

Copy code

Alert alert = driver.switchTo().alert();

alert.accept();

34. Soru: Selenium'da dinamik web elementler ile nasıl başa çıkılır?


Cevap: Selenium'da, dinamik web elementler genellikle XPath veya CSS Selector kullanılarak bulunur. XPath veya CSS Selector'lar, bir elementin attribute'ları, sırası veya hiyerarşik konumu gibi özelliklere göre belirlenebilir.


Ayrıca, bir elementin mevcut olmasını veya belirli bir durumda olmasını beklemek için "explicit wait" kullanılabilir. "Explicit wait", WebDriverWait ve ExpectedConditions sınıfları ile kullanılır.


Bu örnekler, Selenium mülakatlarında karşılaşılabilecek çeşitli konuları kapsar. Başka bir konuda daha fazla bilgi almak isterseniz, lütfen belirtin.


35. Soru: Peki, bir pop-up penceresi ile nasıl başa çıkılır?


Cevap: Selenium WebDriver, farklı pencere veya sekme işlemlerini yönetmek için switchTo() metodu kullanır. Belirli bir pencereye geçiş yapmak için driver.switchTo().window(String windowHandle) kullanılır. Tüm aktif pencerelerin handle'larını almak için driver.getWindowHandles() metodu kullanılır.


java

Copy code

String parentWindow = driver.getWindowHandle();  // Ana pencerenin handle'ını al

for (String windowHandle : driver.getWindowHandles()) {

    if (!windowHandle.equals(parentWindow)) {

        driver.switchTo().window(windowHandle);  // Yeni pencereye geçiş yap

        // Yeni penceredeki işlemler

        driver.close();  // Yeni pencereyi kapat

    }

}

driver.switchTo().window(parentWindow);  // Ana pencereye geri dön

36. Soru: Frames içindeki elementlere nasıl erişirsiniz?


Cevap: WebDriver'ın switchTo() metodu, bir frame veya iframe içindeki elementlere erişim sağlar. Frame veya iframe'ye geçiş yapmak için driver.switchTo().frame(int index) veya driver.switchTo().frame(String nameOrId) kullanılır.


java

Copy code

driver.switchTo().frame("frameName");

WebElement element = driver.findElement(By.id("elementId"));

// İşlemler

driver.switchTo().defaultContent();  // Ana içeriğe geri dön

37. Soru: WebDriver’ın close ve quit metotları arasındaki fark nedir?


Cevap: WebDriver’ın close metodu, aktif pencereyi veya aktif sekme kapatır. Eğer açık tek bir sekme varsa, tarayıcıyı kapatır. quit metodu ise, tarayıcıdaki tüm pencereleri ve sekmeleri kapatır ve WebDriver oturumunu sonlandırır.


38. Soru: 'Stale Element Reference' hatası nedir ve nasıl çözülür?


Cevap: 'Stale Element Reference' hatası, bir WebElement'e bir işlem yapılmaya çalışıldığında, ancak elementin DOM üzerinde artık mevcut olmadığında fırlatılır. Bu genellikle sayfanın yeniden yüklenmesi veya DOM'un dinamik olarak güncellenmesi durumlarında olur.


Bu hatayı çözmek için genellikle "explicit wait" kullanılır. ExpectedConditions sınıfının refreshed metodu, belirli bir durumun sonucunu yenileyerek stale element durumunu ele alır.


java

Copy code

WebDriverWait wait = new WebDriverWait(driver, 10);

WebElement element = wait.until(ExpectedConditions.refreshed(ExpectedConditions.visibilityOfElementLocated(By.id("elementId"))));

39. Soru: 'Element Not Visible' hatası nedir ve nasıl çözülür?


Cevap: 'Element Not Visible' hatası, bir işlem yapmaya çalışılan WebElement'in görünür olmadığı zaman fırlatılır. Bu genellikle elementin var olmasına rağmen, kullanıcıya görünür olmadığı durumlar için geçerlidir (örneğin, CSS'te display: none özelliği ayarlanmışsa).


Bu hatayı çözmek için genellikle "explicit wait" kullanılır, ve ExpectedConditions sınıfının visibilityOfElementLocated metodu ile elementin görünür olmasını bekleriz.


java

Copy code

WebDriverWait wait = new WebDriverWait(driver, 10);

WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("elementId")));

Hiç yorum yok

Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo