def field(label, start_node: nil, placeholder: false, id: false)
      start_node ||= self

      if placeholder
        start_node.element(placeholder: label).to_subtype
      elsif id
        start_node.element(id: label).to_subtype
      else
        field_label = label.respond_to?(:for) ? label : start_node.label(text: label)
        determine_field(start_node, field_label)
      end
    end
def field(label, start_node: nil, placeholder: false, id: false)
      start_node ||= self

      if placeholder
        start_node.element(placeholder: label).to_subtype
      elsif id
        start_node.element(id: label).to_subtype
      else
        field_label = label.respond_to?(:for) ? label : start_node.label(text: label)
        determine_field(start_node, field_label)
      end
    end
Searches for the specified label and returns the form field belonging to it, identified by the
 'for' attribute of the label. Alternatively, you may pass a Watir::Label.
 @param [String, Watir::Label] label the label for which to find the form field.
 @param [Watir::Element] start_node the node where to start searching for the label.
 @param [Boolean] placeholder whether to handle label as Watir::Label or as placeholder
                              attribute for an input field.
 @param [Boolean] id          assumes the given label is an HTML ID and searches for it.

 @return [Watir::Element] form field of the given label. If the field is
                          no form field, it will be assumed to be an
                          OptionGroup.