Tüm yazılar
test-automation

TestFly Bölüm 2: Erişilebilirlik Öncelikli Locator'lar, BasePage ve WaitEngine

DOM ve CSS değişikliklerine dayanıklı testler yazın. TestFly'ın Playwright tarzı semantik seçicilerini (getByRole, getByLabel), BasePage yardımcılarını ve WaitEngine motorunu öğrenin.

28 Ağustos 20261 dk okuma
TestFly Bölüm 2: Erişilebilirlik Öncelikli Locator'lar, BasePage ve WaitEngine

Erişilebilirlik Öncelikli Semantik Seçiciler

Geleneksel Selenium testleri, DOM yapısı her değiştiğinde kırılan kırılgan CSS ve XPath seçicilerine dayanır:

java
// Kırılgan — Arayüz tasarımı değiştiğinde patlar:
find(By.cssSelector("div.modal > form button.btn-primary")).click();

TestFly, kullanıcının sayfayı algılama biçimini (erişilebilirlik ağacını) hedefleyen Semantik Seçiciler sunar:

java
getByRole(Role.BUTTON).withName("Gönder").click();
getByLabel("E-posta adresi").type("kullanici@testfly.io");
getByPlaceholder("Ürün ara…").type("laptop");
getByText("Şifremi unuttum").click();
getByTestId("odeme-butonu").click();

Her semantik seçici, arkasında otomatik bekleme barındıran zincirleme Locator nesnesi döner.


BasePage ile Temiz Page Object Sınıfları

BasePage sınıfı, doğrudan bekleme destekli yardımcı metotlar sağlar:

java
package io.testfly.examples.pages;

import io.testfly.test.BasePage;
import io.testfly.locator.Role;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

public class LoginPage extends BasePage {

    private static final By USERNAME = By.id("username");
    private static final By PASSWORD = By.id("password");

    public LoginPage(WebDriver driver) {
        super(driver);
    }

    public void girisYap(String user, String pass) {
        type(USERNAME, user);
        type(PASSWORD, pass);
        getByRole(Role.BUTTON).withName("Giriş Yap").click();
    }
}

WaitEngine ile Güvenli Senkronizasyon

Özel bekleme durumları için WaitEngine, testfly.yml içindeki zaman aşımlarını kullanarak bekleme yönetir:

java
import io.testfly.wait.WaitEngine;

WaitEngine.waitForVisible(By.id("dashboard-banner"));
WaitEngine.waitForClickable(By.id("odeme-butonu"));
WaitEngine.waitForInvisible(By.cssSelector(".yukleniyor-spinner"));
#TestFly#Java#BasePage#WaitEngine#Semantic Locators#Role#Locator#SDET
Paylaş X LinkedIn

Yorumlar

  • Henüz yorum yok. İlk yorumu sen yaz.