Ric*_*kes 5 ruby-on-rails cucumber capybara
我目前正在为Rails应用程序中的消息传递系统编写Cucumber功能.这是我的一个步骤.
Then(/^they should see the message displayed in their language$/) do
id = "message_to_#{@family.id}"
expect(page).to have_selector("textarea##{id}")
save_and_open_page
expect(page).to have_field(id, type: :textarea)
end
Run Code Online (Sandbox Code Playgroud)
第一个断言通过,但第二个断言失败.当我检查save_and_open_page创建的标记时,会出现以下元素:
<textarea cols="22" disabled="disabled" id="message_to_13" name="body" placeholder="Hallo, Ich bin sehr interessiert an deinem Profil. Würdest du gerne mit mir in Kontakt treten?" rows="7"></textarea>
Run Code Online (Sandbox Code Playgroud)
显示第二个测试的错误消息是:
expected to find field "message_to_13" but there were no matches. Also found "", which matched the selector but not all filters. (Capybara::ExpectationNotMet)
Run Code Online (Sandbox Code Playgroud)
我在这里撕扯我的头发,以了解为什么Capybara可以使用have_selector找到明显存在的元素,但不能使用have_field?
Jus*_* Ko 13
问题是textarea具有disabled="disabled"
属性,这意味着它是一个禁用的字段.默认情况下,Capybara会忽略禁用的字段.Capybara 2.1中的新功能是查找禁用字段的选项.
添加:disabled => true
选项将解决您的问题:
expect(page).to have_field(id, :type => 'textarea', :disabled => true)
Run Code Online (Sandbox Code Playgroud)
注意:
:disabled => true
,必须禁用该字段.默认值为:disabled => false
,仅匹配未禁用的字段.:type => 'textarea')
.使用符号:type => :textarea
将无法正常工作. 归档时间: |
|
查看次数: |
6801 次 |
最近记录: |