package net.serenitybdd.screenplayx.actions; import net.serenitybdd.screenplay.Action; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.targets.Target; import org.openqa.selenium.WebElement; public class ScrollToTarget implements Action { private final Target target; private boolean alignToTop = true; public ScrollToTarget(Target target) { this.target = target; } public ScrollToTarget andAlignToTop() { this.alignToTop = true; return this; } public ScrollToTarget andAlignToBottom() { this.alignToTop = false; return this; } public <T extends Actor> void performAs(T actor) { actor.attemptsTo( scrollTo(target.resolveFor(actor), alignToTop) ); } private Evaluate scrollTo(WebElement element, boolean alignToTop) { return Evaluate.javascript("arguments[0].scrollIntoView(arguments[1]);", element, alignToTop); } }