gpt4 book ai didi

ruby-on-rails-4 - capybara 无法单击模式中的表单按钮,不同的 capybara 驱动程序会看到不同的东西

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

好吧,所以我的问题是 Capybara 无法单击驻留在模式(Bootstrap v2.3)中的表单(使用简单表单生成)的提交按钮。请注意,下面的代码是非常凌乱的学习者代码。我正在尝试对其进行测试,以便我可以对其进行彻底重构。

模态代码:

<div class="modal hide" id="updateModal">
<button type="button" class="close" data-dismiss="modal">×</button>
<div class="modal-header"
<h3>Update your score</h3>
</div>
<div class="modal-body">
<%= simple_form_for @update do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.input :newread , :label => "Amount Read", :placeholder => 'pages/screens/minutes #' , :input_html => { :maxlength => 5 } %>
<%= f.input :medium, :label=> "Medium Read", :collection => ["book", "manga", "game", "fgame", "net", "lyric", "subs", "news", "sent", "nico" ], :prompt => "Select medium read" %>
<% lang_list = Update::user_langs(current_user,ApplicationHelper::curr_round) %>
<%= f.input :lang, :label => "Language", :collection => lang_list, :prompt => "Select your language" %>
<%= f.input :repeat, :label => "Repeat number", :collection =>0..50 , :priority => '0' %>
<%= f.input :dr, :inline_label => 'Double Rowed?', :hint => 'Only to be used with Japanese books', :label => false %>
</div>
<div class="modal-footer">
<%= submit_tag 'Cancel', :class => "btn btn-danger", 'data-dismiss' => "modal" %>
<%= f.button :submit, 'Submit Update' , :class => "btn btn-primary"%>
</div>
<% end %>
</div>

回合 Controller 索引功能:

  def index
@entrants = Round.includes(:user).where(:round_id => "#{ApplicationHelper::curr_round}")
if @entrants == nil
redirect_to root_url, :flash => { :error => "There are currently no users registered for this round." }
end

list = Round.where(:round_id => ApplicationHelper::curr_round).select(:tier).uniq
lang_list = Update.where(:round_id => ApplicationHelper::curr_round).select(:lang).uniq
@tier = list.map(&:tier)
@tier = @tier.sort{ |a,b| Tier::TIER_VALUES[a.to_sym] <=> Tier::TIER_VALUES[b.to_sym]}
@lang = lang_list.map(&:lang)
if signed_in?
@update = current_user.updates.build
end
end

更新页面规范:

describe "Update Pages" do

before do
sign_in #omniauth fake signin
end

subject { page }

describe "a registered user submitting an update", :js => true do
before do
user = User.find_by_uid(123545)
user_round = user.rounds.create!(round_id: ApplicationHelper::curr_round, lang1: 'jp',
lang2: 'en', lang3:'zh', tier: 'Bronze', book: 10, manga: 10,
fgame: 10, game: 10, net: 10, news: 10, lyric: 10,
subs: 10, nico: 10, sent:10, pcount: 1010)
visit round_path(ApplicationHelper.curr_round)
end

it "should update successfully" do
click_link("Update")
fill_in('update[newread]', :with => '10')
select "book", :from => "Medium Read"
select "Japanese", :from => "Language"
click_button "Submit Update"
save_and_open_page
page.should have_selector('alert-success', :text => "Update successfully submitted")
end
end
end

所以我这样做了,当我检查 save_and_open_page 看到的内容时,它的页面根本没有任何变化。没有任何证据表明按钮被按下过。所以我认为 js 生成的模态可能是一个问题,所以我将 , :js => true 添加到 describe 行,安装 webkit 驱动程序并添加 Capybara.javascript_driver = :webkit 到我的 spec_helper.rb 文件并再次运行它。

这一次,我在主页上看到了顶部的“已登录”闪烁,而不是在排名页面上。

所以我想也许使用 selenium 驱动程序可能会更好,所以我安装了它并再次尝试,但这次我的应用程序提示没有人注册该轮。发生这种情况的唯一方法是如果 @entrants 为零,并且我已经与 pry 检查过,至少就数据库而言,绝对不是这种情况。

你们能提供的任何帮助都将非常感激。我不知道如何让这个东西按下我的按钮。

最佳答案

我的建议:

  • 尽可能地清理代码。这将有助于澄清正在发生的事情以及可能导致意外行为的原因。
  • 不要依赖 save_and_open_page 来准确地向您显示驾驶员所看到的内容
  • 你肯定需要 js Bootstrap modal
  • 让 selenium 与 Firefox 一起使用,这样您就可以在屏幕上看到模式是否正确打开。
  • 您可能需要database_cleaner gem 才能使用您正在创建的用户正确访问您的数据库。
  • 您还可以尝试使用 poltergeist/phantom gems 来获取 js 兼容的驱动程序。那有screenshot capabilities

这些片段应该向您展示模式中发生的情况。

关于ruby-on-rails-4 - capybara 无法单击模式中的表单按钮,不同的 capybara 驱动程序会看到不同的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24074646/

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