I know not why this fixes the problem, but it has indeed resolved the situation.
@step(u'I click the "(.*)" button')
def i_click_the_named_button(step, field):
button = world.browser.find_element_by_xpath('(//a[contains(text(),"{0}") and not(contains(@style, "display:none"))] | //input[@value="{0}" and not(contains(@style, "display:none"))] | //li[contains(text(), "{0}") and not(contains(@style, "display:none"))])[1]'.format(field))
button.click()
time.sleep(1)