Selenium Scroll Kullanımı
Web sayfalarında test senaryoları sırasında, görünür alanda olmayan elementlere ulaşmak için sayfa kaydırma (scroll) işlemi gerekir.
Selenium, doğrudan scroll fonksiyonuna sahip olmasa da, JavaScriptExecutor, Actions sınıfı veya Keys sınıfı kullanılarak scroll işlemleri yapılabilir.
1. JavaScriptExecutor ile Scroll İşlemleri
Section titled “1. JavaScriptExecutor ile Scroll İşlemleri”1.1 Sayfayı Belirli Piksel Kadar Kaydırma
Section titled “1.1 Sayfayı Belirli Piksel Kadar Kaydırma”JavascriptExecutor js = (JavascriptExecutor) driver;
// Sayfayı 1000 piksel aşağı kaydırırjs.executeScript("window.scrollBy(0,1000)");
window.scrollBy(x, y)komutu, belirtilen kadar pikseli yatay (x) ve dikey (y) eksende kaydırır.
1.2 Sayfanın En Altına Kaydırma
Section titled “1.2 Sayfanın En Altına Kaydırma”JavascriptExecutor js = (JavascriptExecutor) driver;
// Sayfanın sonuna kadar kaydırırjs.executeScript("window.scrollTo(0, document.body.scrollHeight)");Bu yöntem özellikle sayfa sonundaki footer elementine ulaşmak için kullanılır.
1.3 Belirli Bir Elemente Kadar Kaydırma
Section titled “1.3 Belirli Bir Elemente Kadar Kaydırma”WebElement element = driver.findElement(By.id("footer"));JavascriptExecutor js = (JavascriptExecutor) driver;
// Footer elementine kadar kaydırırjs.executeScript("arguments[0].scrollIntoView(true);", element);
scrollIntoView(true)metodu, hedef element görünür olana kadar sayfayı kaydırır.
2. Actions Sınıfı ile Scroll İşlemi
Section titled “2. Actions Sınıfı ile Scroll İşlemi”Selenium’un Actions sınıfı da klavye tuşlarını simüle ederek scroll yapılmasını sağlar.
2.1 Klavye Tuşlarını Kullanarak Kaydırma
Section titled “2.1 Klavye Tuşlarını Kullanarak Kaydırma”Actions actions = new Actions(driver);
// Sayfayı aşağı kaydıractions.sendKeys(Keys.PAGE_DOWN).perform();
// Sayfayı yukarı kaydıractions.sendKeys(Keys.PAGE_UP).perform();
Keys.PAGE_DOWNveKeys.PAGE_UPtuşları, sayfayı bir ekran boyu kadar aşağı/yukarı kaydırır.
2.2 Aşağı-Yukarı Ok Tuşları ile Scroll
Section titled “2.2 Aşağı-Yukarı Ok Tuşları ile Scroll”Actions actions = new Actions(driver);
// Küçük adımlarla aşağı kaydırmaactions.sendKeys(Keys.ARROW_DOWN).perform();
// Küçük adımlarla yukarı kaydırmaactions.sendKeys(Keys.ARROW_UP).perform();Bu yöntem özellikle dinamik yüklenen sayfalarda (örneğin sonsuz scroll özelliği olan sayfalar) faydalıdır.
3. Elemente Scroll ve Tıklama
Section titled “3. Elemente Scroll ve Tıklama”Bazı elementler ekranda görünmediği için doğrudan tıklanamaz. Bu durumda önce scroll yapıp ardından tıklama işlemi gerçekleştirilir.
WebElement element = driver.findElement(By.xpath("//button[text()='Gönder']"));JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollIntoView(true);", element);element.click();4. Sonsuz Scroll (Infinite Scroll) Uygulamaları
Section titled “4. Sonsuz Scroll (Infinite Scroll) Uygulamaları”Bazı modern web uygulamaları içerikleri sayfa aşağı indikçe yükler (örneğin: Twitter, Instagram). Bu tip sayfalarda scroll işlemi döngü ile yapılabilir.
JavascriptExecutor js = (JavascriptExecutor) driver;long lastHeight = (long) js.executeScript("return document.body.scrollHeight");
while (true) { js.executeScript("window.scrollTo(0, document.body.scrollHeight);"); Thread.sleep(2000); // yeni içeriklerin yüklenmesi için bekleme
long newHeight = (long) js.executeScript("return document.body.scrollHeight"); if (newHeight == lastHeight) { break; // Sayfa sonuna ulaşıldı } lastHeight = newHeight;}5. Scroll İşlemlerinde Dikkat Edilmesi Gerekenler
Section titled “5. Scroll İşlemlerinde Dikkat Edilmesi Gerekenler”- Scroll işlemi sonrası elementin gerçekten görünür olup olmadığını
isDisplayed()ile kontrol edin. - JavaScriptExecutor kullanırken
Thread.sleep()yerineWebDriverWaittercih edin. - Scroll işlemlerini test adımlarında gereksiz yere kullanmaktan kaçının; elementler görünürse Selenium zaten otomatik olarak scroll yapabilir.
6. Özet
Section titled “6. Özet”| Yöntem | Açıklama | Kullanım Alanı |
|---|---|---|
JavaScriptExecutor | JS komutlarıyla piksel, element veya sayfa sonuna kaydırma | En yaygın yöntem |
Actions | Klavye tuşları ile kaydırma | Klavye simülasyonu gereken durumlarda |
Keys | Küçük adımlı yukarı/aşağı hareketler | Dinamik içerik yüklemede |
| Döngü ile Scroll | Sonsuz sayfalar | Twitter, e-ticaret sayfaları |
7. Sonuç
Section titled “7. Sonuç”Selenium’da scroll işlemleri doğrudan API ile gelmese de, JavaScriptExecutor ve Actions sınıfları ile kolayca uygulanabilir.
Test senaryolarında scroll işlemleri genellikle element etkileşimlerinden önce görünürlük sağlamak için kullanılır.