水豚暧昧

Capybara Ambiguous

大家好,我这里有一段漂亮的代码,我想做的是在规格范围内单击值为 "Personal data change erstellen" 的提交按钮。唯一的问题是,我有 5 个具有相同值的其他提交按钮,我正试图在一个方法中涵盖所有这些。有没有人建议如何制作它 运行,模棱两可的错误让我很难受。请看下面的代码。

      <legend>Handynummer</legend>


        <div class="form-group">
          <label for="banking_personal_data_change_value_adr_mobile">Adr mobile</label>
          <input class="form-control" value="49160002774531" name="banking_personal_data_change_value[adr_mobile]" id="banking_personal_data_change_value_adr_mobile" type="text">
        </div>

        <div class="form-group">
          <input name="banking_personal_data_change[send_email]" value="0" type="hidden"><input value="1" checked="checked" name="banking_personal_data_change[send_email]" id="banking_personal_data_change_send_email" type="checkbox">
          <label for="banking_personal_data_change_send_email">E-Mail an den Kunden</label>
        </div>

      <div class="form-actions">
        <input name="commit" value="Personal data change erstellen" class="btn btn-primary" type="submit">
      </div>

它很脆弱,但你可以使用 XPath 找到第 n 个元素

(//input[@value="Personal data change erstellen"])[5]

或类似的东西。

你没有显示足够的 HTML 让我们看到其他按钮之一并确定确切的范围是什么,但看到你正在使用 legend 标签,我假设每个按钮周围至少有一个 fieldset。有了它,您应该能够使用

之类的东西来限定字段集(我假设它具有独特的图例)
within_fieldset('Handynummer') do
  click_button('Personal data change erstellen')
end

或一行

find(:fieldset, 'Handynummber').click_button('Personal data change erstellen')