package br.com.caelum.vraptor.musicjungle.acceptance.pages;
import static org.openqa.selenium.By.cssSelector;
import static org.openqa.selenium.By.name;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import br.com.caelum.vraptor.musicjungle.model.Music;
public class HomePage extends PageObject{
public HomePage(WebDriver driver) {
super(driver);
}
public MusicPage clickOnFirstMusic() {
By selector = cssSelector("table a:first-child");
driver.findElement(selector).click();
return new MusicPage(driver);
}
public SearchPage searchFor(String title) {
By cssSelector = cssSelector("form");
PageForm form = new PageForm(driver, cssSelector);
form.input("music.title", title).submitForm();
return new SearchPage(driver);
}
public void addMusic(Music music) {
PageForm form = refreshPageForm();
form.input("music.title", music.getTitle());
form.select(name("music.type"), music.getType().toString());
form.input("music.description", music.getDescription());
form.submitForm();
}
/*
* (non-javadoc) this refresh method is needed to prevent
* {@code org.openqa.selenium.StaleElementReferenceException}
*/
private PageForm refreshPageForm() {
By cssSelector = cssSelector(".well form");
return new PageForm(driver, cssSelector);
}
}