Cucumber: fill_in does not take label

In a Cucumber step, the following line will fill in the screen_name
text box:

fill_in "user[screen_name]", :with => user.screen_name

but the following line will not

fill_in "Screen name:", :with => user.screen_name

Here is the text of the form:

<div class="form_row">
  <label for="screen_name">Screen name:</label>
  <input id="user_screen_name" maxlength="20" name="user[screen_name]"
size="20" type="text" />

Is this expected behavior? I would rather use the label value than
the name value because the label value is easier to find out: I don't
need to look at the source of the view.