İçeriğe geç

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.


Aktif (şu anda üzerinde çalışılan) pencerenin benzersiz kimliğini (ID) döner.

String currentWindow = driver.getWindowHandle();
System.out.println("Aktif pencere ID: " + currentWindow);

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);
}

Belirtilen pencereye geçiş yapar.

for (String window : driver.getWindowHandles()) {
if (!window.equals(currentWindow)) {
driver.switchTo().window(window);
break;
}
}

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");

DurumKullanılacak Komut
Aktif pencere ID’sini almakdriver.getWindowHandle()
Tüm pencere ID’lerini almakdriver.getWindowHandles()
Yeni sekmeye geçmekdriver.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)

  • Pencere geçişlerinden sonra, driver.getTitle() veya driver.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.

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.