Find a button with the given value.

    Searches for the following different kinds of buttons:

        <input type="submit">
        <input type="reset">
        <input type="button">
        <input type="image">
        <button>
        <{a,p,div,span,...} role="button">

    Returns: an :class:`ElementSelector`

def find_button(browser, value):
    """
    Find a button with the given value.

    Searches for the following different kinds of buttons:

        <input type="submit">
        <input type="reset">
        <input type="button">
        <input type="image">
        <button>
        <{a,p,div,span,...} role="button">

    Returns: an :class:`ElementSelector`
    """
    field_types = (
        'submit',
        'reset',
        'button-element',
        'button',
        'image',
        'button-role',
    )

    return reduce(
        operator.add,
        (find_field_with_value(browser, field_type, value)
         for field_type in field_types)
    )