package br.com.caelum.seleniumdsl.webdriver;
import java.util.List;
import org.apache.commons.lang.NotImplementedException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;
import br.com.caelum.seleniumdsl.Form;
import br.com.caelum.seleniumdsl.SelectField;
public class WebDriverSelectField implements SelectField {
private final WebDriver webDriver;
private final Form form;
private final String id;
private Select select;
public WebDriverSelectField(final WebDriver webDriver, final Form form, final String id) {
this.webDriver = webDriver;
this.form = form;
this.id = id;
}
public Form choose(final String value) {
getSelect().selectByVisibleText(value);
return form;
}
public Form choose(final int index) {
getSelect().selectByIndex(index);
return form;
}
public String content() {
return getSelect().getFirstSelectedOption().getText();
}
public String value() {
return getSelect().getFirstSelectedOption().getValue();
}
public String[] values() {
final List<WebElement> options = getSelect().getOptions();
final String[] values = new String[options.size()];
for (int i = 0; i < options.size(); i++) {
values[i] = options.get(i).getValue();
}
return values;
}
private Select getSelect() {
if(select == null ) {
select = new Select(webDriver.findElement(new ByIdOrNameOrXPath(id)));
}
return select;
}
public void blur() {
throw new NotImplementedException();
}
}