"Select" components such as <h:selectOneMenu> or <h:selectManyListbox> allow you to select one or more items in a component. The JSF components <f:selectItem> and <f:selectItems> allow you to specify which items can be chosen.
How you select the items in a JSFUnit test depends on whether you use <f:selectItem> or <f:selectItems>. For <f:selectItem> the values are explicitly set in your JSF page and it's easy to click on a particular item in your test:
<h:selectManyListbox id="Weekdays"> <f:selectItem id="selectMonday" itemValue="Monday"/> <f:selectItem id="selectTuesday" itemValue="Tuesday"/> <f:selectItem id="selectWednesday" itemValue="Wednesday"/> <f:selectItem id="selectThursday" itemValue="Thursday"/> <f:selectItem id="selectFriday" itemValue="Friday"/> <f:selectItem id="selectSaturday" itemValue="Saturday"/> </h:selectManyListbox>
To click one of these items in my test I would do the following:
JSFClientSession client = jsfSession.getJSFClientSession(); client.click("selectMonday");
If you are using <f:selectItems> you don't easily know the id that needs to be "clicked". So you would Using the HtmlUnit API with JSFUnit :
<h:selectManyListbox id="WeekdaysUsingSelectItems"> <f:selectItems id="WeekdayItems" value="#{weekdaylist}"/> </h:selectManyListbox>
JSFClientSession client = jsfSession.getJSFClientSession(); HtmlSelect select = (HtmlSelect)client.getElement("WeekdaysUsingSelectItems"); select.getOptionByValue("Monday").setSelected(true);
Comments