代码之家  ›  专栏  ›  技术社区  ›  maudulus

让水豚点击下拉选项

  •  6
  • maudulus  · 技术社区  · 10 年前

    我正在尝试使用Capybara选择下拉选项,但它不允许我。表单如下:

      <%= simple_form_for @building do |f| %>
        <%= f.input :address  %>
        <%= f.input :city  %>
        <%= f.input :state, collection: ['AL', 'AK', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL',
          'GA', 'HI', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS',
          'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY'] %>
        <%= f.input :zip  %>
        <%= f.input :description  %>
        <%= f.button :submit, "Add Building"  %>
      <% end %>
    

    允许您从美国所有州的下拉列表中选择。我在Capybara使用的代码如下:

        fill_in 'Address', with: valid_attrs.address
        fill_in 'City', with: valid_attrs.city
        click_on 'building_state'
        click_on 'CT'
        fill_in 'Zip', with: valid_attrs.zip
    

    但“点击'building_state'到点击'CT'不起作用。

    2 回复  |  直到 10 年前
        1
  •  17
  •   Kirti Thorat    10 年前

    要从下拉列表中选择选项,您需要使用 select 方法而不是 click_on :

    例如:

    select 'CT', from: "building_state"
    
        2
  •  1
  •   OuttaSpaceTime    2 年前

    documentation :

    选择框可以通过其名称、id、test_id属性或标签文本找到。该选项可以通过其文本找到。

    page.select 'March', from: 'Month'
    

    当你有

    <%= form.label :user_id %>
    <%= form.collection_select :user_id, movie.assignable_users, :id, :full_name %>
    

    这将导致DOM元素

    <label for="movie_user_id">User</label>
    <select name="movie[user_id]" id="movie_user_id" data-dashlane-rid="0d250b2b30fe033f" data-form-type="other">
      <option selected="selected" value="19">Kro Bo</option>
      <option value="18">Kas Brea</option>
    </select>
    

    现在,您可以读取文档中命名的任何html属性并使用它们。

    所以

    select 'Kro Bo', from: "movie_user_id"
    select 'Kro Bo', from: "movie[user_id]"
    select 'Kro Bo', from: "User"
    

    将起作用。

    使用标签时,请确保 for 的属性 label 匹配 id html的属性 select 要素