25

I'm using HtmlUnit in Java to navigate to a web page. From that webpage i need to log in and then go from there. I know how to type in the user name and password but then there is a dropdown box where i need to select one of the options. How do i select an option from a dropdown box in HtmlUnit? Thanks

skaffman
  • 398,947
  • 96
  • 818
  • 769
Peter
  • 5,071
  • 24
  • 79
  • 115

3 Answers3

41

You can navigate and manipulate the page <select> elements using HtmlSelect:

WebClient client = ...
Page page = client.getPage(url);
HtmlSelect select = (HtmlSelect) page.getElementById(mySelectId);
HtmlOption option = select.getOptionByValue(desiredOptionValue);
select.setSelectedAttribute(option, true);

The JavaDoc shows that there are a lot of flexible API methods for doing things like this.

skaffman
  • 398,947
  • 96
  • 818
  • 769
3

Following code:

HtmlSelect select = page.getElementById(mySelectId);

should be:

HtmlSelect select = (HtmlSelect)page.getElementById(mySelectId);
Compass
  • 5,867
  • 4
  • 30
  • 42
George
  • 31
  • 1
3

Add the follwoing lines:

protected void selectOption(WebElement el, String option)
{
    Select select = new Select(el);
    select.selectByVisibleText(option);
}

protected WebElement elById(String id)
{
    return driver.findElement(By.id(id));
}

// "title" is your drop-down HTML id 
public void populateForm(String elValue)
{
    selectOption(elById("title"), elValue);
}