def assert_multi_selected(test, select_name, option_names):
    # Ensure its not selected unless its one of our options
    option_names = [on.strip() for on
                    in option_names.split('\n') if on.strip()]
    select_box = find_field(test.browser, 'select', select_name)
    option_elems = select_box.find_elements_by_xpath(str('./option'))
    for option in option_elems:
        if option.get_attribute('id') in option_names or \
           option.get_attribute('name') in option_names or \
           option.get_attribute('value') in option_names or \
           option.text in option_names:
            test.assertTrue(option.is_selected())
        else:
            test.assertFalse(option.is_selected())
def select_multi_items(test, select_name, option_names):
    # Ensure only the options selected are actually selected
    option_names = [on.strip() for on
                    in option_names.split('\n') if on.strip()]
    select_box = find_field(test.browser, 'select', select_name)

    select = Select(select_box)
    select.deselect_all()

    for option in option_names:
        try:
            select.select_by_value(option)
        except NoSuchElementException:
            select.select_by_visible_text(option)
def assert_radio_not_selected(test, value):
    box = find_field(test.browser, 'radio', value)
    test.assertFalse(box.is_selected())
def choose_radio(test, value):
    box = find_field(test.browser, 'radio', value)
    box.click()
def assert_not_checked_checkbox(test, value):
    check_box = find_field(test.browser, 'checkbox', value)
    test.assertFalse(check_box.is_selected())
def uncheck_checkbox(test, value):
    check_box = find_field(test.browser, 'checkbox', value)
    if check_box.is_selected():
        check_box.click()