gpt4 book ai didi

ruby-on-rails - 为什么 Capybara 不填写这些表单元素?

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

我一直在尝试设置 capybara 来测试表单,但我不断收到错误
cannot fill in, no text field, text area or password field with id, name, or label 'Name' found

以下是我的观点:

<%= form_for(@user) do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
...
<%= f.submit "Create Account", class: "btn btn-large btn-primary" %>
<% end %>

呈现以下 html:

<label for="user_name">Name</label>
<input id="user_name" name="user[name]" size="30" type="text" />

所以看起来应该根据标签查找字段。

这是我的 user_pages_test.rb 文件的内容(我正在使用 Test::Unit 和 Shoulda-context):

context "sign up page" do
should "add user to database when fields are filled in" do
fill_in "Name", with: "Bubbles"
...
click_button "Create Account"
end
end

这是我迄今为止尝试过的:

1) 将调用更改为 fill_in将 id 与 fill_in "user_name", with: "Bubbles" 匹配
2) 将调用更改为fill_inpage.fill_in "Name", with: "Bubbles"匹配 documentation 中的示例
3)更改 View 手动添加id"Name"<%= f.text_field :name, id: "Name" %> ( this 答案)
4) 将调用更改为get sign_up_pathget "/sign_up" (如果是路由问题)

所有这些仍然给我同样的错误,这让我认为由于某种原因页面没有正确加载。但是,我在同一上下文中进行了不同的(通过)测试,断言页面具有正确的标题,因此我知道页面确实已正确加载(在 setup 中)。

基于此(并根据 this 答案),问题似乎可能只是 fill_in方法在尝试访问字段之前不会等待页面加载。根据this建议,我添加了行 puts page.body在我的测试中,我们看到 HTML 在尝试填充字段之前已完全加载,并得到以下输出:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

所以,我很确定fill_in只是没有等待页面加载。然后我尝试了

5) 更改Capybara.default_wait_time根据this答案,但这没有效果。我尝试将其设置为 ActionDispatch::IntegrationTest test_helper 文件中的类(其中包含 Capybara)以及测试本身中的类。

然后我尝试添加 puts page.body在通过测试中(在断言正确标题之前和之后),我得到了相同的输出。然后,我发现this答案,最后得到控制台打印出页面的HTML。我又尝试了一件事让 capybara 填写字段:

6) 将调用更改为 fill_in@response.fill_in ,自 @response似乎做了我想的page变量应该做的。

所以,我对此有两个问题:

1) page 是什么意思?变量实际上指的是?我的应用程序的文档类型声明只是 <!DOCTYPE html> ,所以我不知道它从哪里得到旧的。

2) 为什么 capybara 无法找到/填写这些字段?

最佳答案

您需要使用visit方法来正确设置页面对象。 capybara documentation表示默认访问“/”,如果您想访问其他页面,则需要进行显式调用。阅读一些有关 the difference between visit and get 的内容也可能会有所帮助。 。

关于ruby-on-rails - 为什么 Capybara 不填写这些表单元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780866/

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