Actor theReceptionist = new Actor().with(WebBrowsing.ability())
theReceptionist.attemptsTo(
Go.to(findOwnersScreen.url()),
Search.forOwnersWith(EMPTY_SEARCH_TERMS),
Count.theNumberOfOwners()
);
assertThat(
theReceptionist.sawThatThe(numberOfOwners()),
was(TheExpectedNumberOfOwners)
);
private static String searchTerms;
@Override
public void performAs(Actor asAReceptionist){
asAReceptionist.attemptTo(
Enter.the(searchTerms).into(findOwnersScreen.searchTerms),
Click.onThe(findOwnersScreen.searchButton)
);
}
public SearchForOwnersWith(String searchTerms){
this.searchTerms = searchTerms;
}
@ Url("owner/find.html")
public class FindOwnerScreen extends WebScreen{
@LocateBy(css="#search-owner-form input")
public ScreenElement searchTerms;
@LocateBy(css="##search-owner-form button")
public SearchElement searchButton;
public class Enter extends WebDriverInteraction implements Perform{
private String text;
private ScreenElement field;
publicvoid performAs(Actor actor){
web(actor).findElement(field.locator()).sendKeys(text);
}
public Enter(String text){this.text = text;}
public static Enter the(String text){return new Enter(text);}
public Perform into(ScreenElement field){
this.field = field;
return this;
}
}
相比于PO模式