** (HTML Element) Gives a consistent means to get and set the value of *any* form field. constclass FormInput : Element { @NoDocnew makeFromFinder (ElemFinder elemFinder) : super(elemFinder){}new makeFromCss (Str cssSelector) : super(cssSelector){}** Returns the 'name' attribute. Str? name(){ getAttr("name")}** Gets and sets the 'value' attribute.** Returns 'null' if the value has not been set. Str? value { get {switch(elementName){case"input":if(getAttr("type") == "checkbox")return toCheckBox.checked.toStrelsereturn getAttr("value")case"textarea":return toTextBox.valuecase"select":return toSelectBox.selected?.value ?: nullcase"option":return toOption.valuedefault:return fail("Element is NOT a form input: ", false)}} set {switch(elementName){case"input":if(getAttr("type") == "checkbox") toCheckBox.checked = it.toBoolelse setAttr("value", it)case"textarea": toTextBox.value = itcase"select":if(toSelectBox.optionByValue(it) == null) fail("There is no <option> with the value: $it\n", false) toSelectBox.optionByValue(it).selected = truecase"option": toOption.value = itdefault: fail("Element is NOT a form input: ", false)}}}** Verify that the form field has the given value. Void verifyValueEq(Obj expected){ verifyEq(value, expected)}}