Ana içeriğe geç

Iframe'leri yönetme

Bir <iframe> içindeki içerikle etkileşime geçmek normalde driver.switchTo().frame(...) çağırmak ve geri geçiş yapmayı hatırlamak anlamına gelir. BasePage içindeki withinFrame(...) bu işin takibini sizin için yapar: içeri geçer, eyleminizi çalıştırır ve önceki bağlamı geri yükler — iç içe olsa bile.

CheckoutPage.java
import io.testfly.test.BasePage;
import org.openqa.selenium.By;

public class CheckoutPage extends BasePage {

public void payWithCard(String number) {
withinFrame(By.id("payment-iframe"), () -> {
type(By.id("card-number"), number);
click(By.id("pay"));
});
// Back in the main document automatically here.
}
}

İç içe yerleştirme güvenlidir — iç çerçeveler en üst belgeye değil, üst çerçevelerine geri döner:

withinFrame(By.id("outer-iframe"), () -> {
withinFrame(By.id("inner-iframe"), () -> {
click(By.id("confirm"));
});
click(By.id("next")); // still inside outer-iframe
});

Bir çerçeveyi dizine göre mi yoksa name/id özniteliğine göre mi hedeflemeyi tercih edersiniz? withinFrameIndex(int, ...) veya withinFrameName(String, ...) kullanın.

Daha derin referans: BasePage — sayfa nesneleri için temel sınıf ve çerçeve yardımcıları.