Selenium'da Window (Pencere) Yönetimi
Selenium testlerinde bir linke tıkladığınızda yeni bir pencere (window) veya sekme (tab) açılabilir.
Bu durumda testin devam edebilmesi için pencere odaklarını (window handles) yönetmek gerekir.
🔹 Temel Kavramlar
Section titled “🔹 Temel Kavramlar”1. getWindowHandle()
Section titled “1. getWindowHandle()”Aktif (şu anda üzerinde çalışılan) pencerenin benzersiz kimliğini (ID) döner.
String currentWindow = driver.getWindowHandle();System.out.println("Aktif pencere ID: " + currentWindow);2. getWindowHandles()
Section titled “2. getWindowHandles()”Tüm açık pencerelerin ID’lerini bir Set koleksiyonu olarak döner.
Set<String> allWindows = driver.getWindowHandles();for (String window : allWindows) { System.out.println("Pencere ID: " + window);}3. switchTo().window()
Section titled “3. switchTo().window()”Belirtilen pencereye geçiş yapar.
for (String window : driver.getWindowHandles()) { if (!window.equals(currentWindow)) { driver.switchTo().window(window); break; }}🔹 Örnek Senaryo: Yeni Sekmeye Geçiş
Section titled “🔹 Örnek Senaryo: Yeni Sekmeye Geçiş”import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;
import java.util.Set;
public class WindowExample { public static void main(String[] args) { WebDriver driver = new ChromeDriver(); driver.get("https://example.com");
// Ana pencere ID'sini al String mainWindow = driver.getWindowHandle();
// Yeni sekme açan linke tıkla driver.findElement(By.linkText("Yeni Sekmeyi Aç")).click();
// Tüm pencereleri al Set<String> windows = driver.getWindowHandles();
// Yeni sekmeye geçiş yap for (String window : windows) { if (!window.equals(mainWindow)) { driver.switchTo().window(window); break; } }
// Yeni sekmede işlem yap System.out.println("Yeni sekme başlığı: " + driver.getTitle());
// Ana pencereye geri dön driver.switchTo().window(mainWindow); System.out.println("Ana pencere başlığı: " + driver.getTitle());
driver.quit(); }}🔹 Yeni Sekme veya Pencere Açma (Selenium 4 ile)
Section titled “🔹 Yeni Sekme veya Pencere Açma (Selenium 4 ile)”Selenium 4, doğrudan yeni sekme veya pencere açmayı destekler:
import org.openqa.selenium.WindowType;
// Yeni sekme açdriver.switchTo().newWindow(WindowType.TAB);driver.get("https://google.com");
// Yeni pencere açdriver.switchTo().newWindow(WindowType.WINDOW);driver.get("https://github.com");🔹 Faydalı İpuçları
Section titled “🔹 Faydalı İpuçları”| Durum | Kullanılacak Komut |
|---|---|
| Aktif pencere ID’sini almak | driver.getWindowHandle() |
| Tüm pencere ID’lerini almak | driver.getWindowHandles() |
| Yeni sekmeye geçmek | driver.switchTo().window(id) |
| Yeni sekme açmak (Selenium 4) | driver.switchTo().newWindow(WindowType.TAB) |
| Yeni pencere açmak (Selenium 4) | driver.switchTo().newWindow(WindowType.WINDOW) |
💡 Notlar
Section titled “💡 Notlar”- Pencere geçişlerinden sonra,
driver.getTitle()veyadriver.getCurrentUrl()kullanarak doğru pencereye geçtiğinizi doğrulayabilirsiniz. - Testin sonunda tüm pencereleri kapatmak için
driver.quit()komutu kullanılır. - Eğer sadece aktif pencereyi kapatmak istiyorsanız,
driver.close()yeterlidir.
🧠 Özet
Section titled “🧠 Özet”Selenium’da pencere yönetimi, birden fazla sekme veya pencere açan test senaryoları için kritik öneme sahiptir.
getWindowHandles() ve switchTo().window() metotları ile kolayca kontrol edilebilir.