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
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