如何在没有类或标识

时间:2017-07-28 07:14:35

标签: capybara

我的页面上有两个字段集。他们都没有任何身份或类别。 现在我想填写第二个字段集中的特定字段。

目前我正在做类似这样的事情:

within_fieldset('fieldset') do
  fill_in 'app_answers_attributes_0_answer', with: 'My First Answer'
end
click_on 'Submit'

这是错误的:

  

Capybara :: ElementNotFound:无法找到fieldset" fieldset"

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

within_fieldset会获取字段集的ID或图例文字 - http://www.rubydoc.info/gems/capybara/Capybara/Session#within_fieldset-instance_method - 所以within_fieldset('fieldset')并不令您感到惊讶<fieldset> <legend>Something</legened> ... </fieldset> <fieldset> <legend>Other thing</legened> ... </fieldset> 。如何做你想做的事实取决于你的HTML结构。例如,如果你的字段集有图例

within_fieldset('Other thing') do
    ...
end 

你可以做到

<div id="first_section">
   ...
    <fieldset>...</fieldset>
<div>
<div id="second_section">
    <fieldset>...</fieldset>
</div>

如果你没有传说,但有包装元素

within('#second_section fieldset') do
   ...
end

然后您可以使用CSS将范围扩展到正确的字段集

<div>
  <fieldset>...</fieldset>
  <fieldset>...</fieldset>
</div>

如果相反,字段集是兄弟姐妹

within("fieldset + fieldset") do
  ...
end

然后您可以使用CSS同级选择器

扩展到第二个字段集
throw()