gpt4 book ai didi

ruby-on-rails - capybara have_field找不到have_selector找到的字段

转载 作者:行者123 更新时间:2023-12-03 12:20:03 27 4
gpt4 key购买 nike

我目前正在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

第一个断言通过,但是第二个断言失败。当我检查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>

为第二项测试显示的错误消息是:
expected to find field "message_to_13" but there were no matches. Also found "", which matched the selector but not all filters. (Capybara::ExpectationNotMet)

我在这里扯我的头发,以了解为什么Capybara可以使用have_selector而不是have_field找到明显存在的元素?

最佳答案

问题是textarea具有disabled="disabled"属性,这意味着它是一个禁用字段。默认情况下, capybara 会忽略禁用的字段。 Capybara 2.1的新增功能是look for disabled fields的选项。
添加disabled: true选项将解决您的问题:

expect(page).to have_field(id, type: 'textarea', disabled: true)
笔记:
  • 当您包含disabled: true时,必须禁用该字段。默认值为disabled: false,它仅与未禁用的字段匹配。
  • :type值应为字符串。如上所示,它是type: 'textarea')。使用符号,type: :textarea将不起作用。
  • 关于ruby-on-rails - capybara have_field找不到have_selector找到的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18432447/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com