我在我的rspec中收到了webkit驱动程序的以下消息:
Capybara::Driver::Webkit::WebkitInvalidResponseError:
Unable to load URL: http://127.0.0.1:44923/posts
Run Code Online (Sandbox Code Playgroud)
几天前它起作用了.问题在于save_page方法.可能有什么不对?
ruby ruby-on-rails acceptance-testing capybara capybara-webkit
我看到很多关于Capybara的问题和答案在测试内容之前没有等待AJAX请求完成,但我需要做相反的事情:我想在AJAX请求完成之前测试加载消息是否存在.
在RSpec中使用Capybara完成AJAX请求之前,我将如何检查内容?
谢谢!
我正在尝试使用Capybara -webkit填充wysihmlt5 textarea (不确定是否有其他方法):
Capybara.default_driver = :webkit
page.execute_script %Q{ $('#wysihtml5-textarea').data("wysihtml5").editor.setValue('Lorem ipsum') }
Run Code Online (Sandbox Code Playgroud)
但我得到了错误:
undefined|0|ReferenceError: Can't find variable: $
FQFont::setPixelSize: Pixel size <= 0 (0)
Failure/Error: page.execute_script %Q{ $('#wysihtml5-textarea').data("wysihtml5").editor.setValue('Lorem ipsum') }
Capybara::Driver::Webkit::WebkitInvalidResponseError:
Javascript failed to execute
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢?
我正在使用一个使用uservoice的应用程序.uservoice片段
var uv = document.createElement('script');
uv.type = 'text/javascript';
uv.async = true;
uv.src = ...; // external call to uservoice to fetch js
var s = document.getElementsByTagName('script')[0];
...
Run Code Online (Sandbox Code Playgroud)
这个javascript加载在所有页面上.运行时rake spec运行会定期挂起.当我删除uservoice片段时,所有测试都顺利运行.我已经尝试过设置Capybara.javascript_driver = :webkit_debug,我看不到uservoice的响应.当我设置时,page.driver.browser.timeout我可以看到来自uservoice的0响应,并且规格将因超时错误而失败.
其他人遇到这个问题?
我目前正在尝试在rails 3.2 app上安装Capybara-Webkit.每当我尝试安装gem时,我都会得到以下输出.我在Debian上不稳定.
ERROR: Error installing capybara-webkit:
ERROR: Failed to build gem native extension.
/home/james/.rvm/rubies/ruby-1.9.3-p392/bin/ruby extconf.rb
qmake: could not find a Qt installation of ''
Command 'qmake -spec linux-g++' failed
Gem files will remain installed in /home/james/.rvm/gems/ruby-1.9.3-p392@ho/gems/capybara-webkit-1.0.0 for inspection.
Results logged to /home/james/.rvm/gems/ruby-1.9.3-p392@ho/gems/capybara-webkit-1.0.0/./gem_make.out
Run Code Online (Sandbox Code Playgroud)
我已经安装了libqtwebkit-devapt,以及qtcreator.我仍然得到这些错误,我的智慧结束了.
还有其他人用debian遇到过这个问题吗?这是漫长的一天,所以我可能会错过一些信息.如果我能提供更多信息,请告诉我.
多域应用程序。本地使用 POW 服务器。黄瓜测试
在我设置 app_host 的步骤之一(子域属于帐户并每次都创建):
def set_current_subdomain(subdomain)
Capybara.app_host = "http://#{subdomain}.example.com:#{Capybara.server_port}"
end
Run Code Online (Sandbox Code Playgroud)
在黄瓜设置中:
Capybara.run_server = true
Capybara.server_port = 8200
Capybara.javascript_driver = :selenium #default driver when you using @javascript tag
Capybara.app = Rack::ShowExceptions.new(MyApp::Application)
Capybara.default_driver = :rack_test
Run Code Online (Sandbox Code Playgroud)
步骤示例
visit(new_user_session_url(subdomain: @account.subdomain, port: Capybara.server_port))
Run Code Online (Sandbox Code Playgroud)
黄瓜测试通过 :rack_test 通过,但通过 :webkit 或 :selenium 失败
Unable to load URL: http://veumbogan8d11d7feca.example.com:8200/signin because of error loading http://veumbogan8d11d7feca.example.com:8200/signin: Unknown error (Capybara::Webkit::InvalidResponseError)
Run Code Online (Sandbox Code Playgroud)
webkit_debug 输出:
Finished "EnableLogging" with response "Success()"
Wrote response true ""
Received "Visit"
Started "Visit"
Load started
"Visit" started page …Run Code Online (Sandbox Code Playgroud) 我有一个嵌套的表单,有4个复选框.目前,一切都在浏览器中工作,但我无法获取capybara测试取消选中复选框并保存.
使用Rails 4.2.2和最新版本的capaybara-webkit和rspec
settings.html.erb
<%= f.fields_for :preferences do |f| %>
<div class="email-notifications-holder">
<div class="email-holder">
<%= f.label :new_match, "Getting a new match each week" %>
<%= f.check_box :new_match, class: "checkbox new_match_email" %>
</div>
<div class="email-holder">
<%= f.label :match_reminder, "New matches Thursday reminder", class: "match_reminder_email" %>
<%= f.check_box :match_reminder, default: true, class: "checkbox" %>
</div>
<div class="email-holder">
<%= f.label :accepted_match, "A Glassbreakers accepted a match", class: "accepted_match_email" %>
<%= f.check_box :accepted_match, default: true, class: "checkbox" %>
</div>
<div class="email-holder">
<%= f.label :new_message, …Run Code Online (Sandbox Code Playgroud) 我试图
describe "test", :js => true do
it "test" do
Capybara.default_max_wait_time = 3
Capybara::Webkit.configure do |config|
config.allow_unknown_urls
end
my test
end
it "test2" do
...
end
end
Run Code Online (Sandbox Code Playgroud)
替换我在 spec_helper 中的水豚配置仅用于单个测试,但我收到错误“所有配置必须在驱动程序启动之前进行”。
这是我的spec_helper
Capybara.run_server = false
Capybara.default_max_wait_time = 1
Capybara.javascript_driver = :webkit_with_qt_plugin_messages_suppressed
Capybara::Webkit.configure do |config|
config.block_unknown_urls
end
RSpec.configure do |config|
config.include Capybara::DSL
end
Run Code Online (Sandbox Code Playgroud)
有办法做到吗?
我在将JS测试集成到rails/angular应用程序时遇到了麻烦.特别是,我的测试设置在这个html文件中的{{handlebars}}的第8次和最后一次出现时很窒息,我无法弄清楚这种情况有什么特别之处.
问题错误来自_form.html.erb的第784 行:
<textarea class="figures_json col-lg-11 col-md-10 col-xs-9" readonly="readonly" name="dance[figures_json]" id="dance_figures_json">
{{2+2}}</textarea>
Run Code Online (Sandbox Code Playgroud)
错误是这样的:
dm@red:~/contra$ rspec ./spec/features/dances/create_spec.rb:7
Run options: include {:locations=>{"./spec/features/dances/create_spec.rb"=>[7]}}
F
Failures:
1) Creating dances creates a new dance with non-javascript data
Failure/Error: JSON.parse figures_json
ActionView::Template::Error:
784: unexpected token at '{{2+2}}'
# ./app/models/dance.rb:10:in `figures'
# ./app/views/dances/_bodyshow.html.erb:6:in `_app_views_dances__bodyshow_html_erb__2235413439078114529_46217560'
# /home/dm/.rvm/gems/ruby-2.3.0/gems/actionview-4.2.3/lib/action_view/template.rb:145:in `block in render'
# /home/dm/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.3/lib/active_support/notifications.rb:166:in `instrument'
# /home/dm/.rvm/gems/ruby-2.3.0/gems/actionview-4.2.3/lib/action_view/template.rb:333:in `instrument'
# /home/dm/.rvm/gems/ruby-2.3.0/gems/actionview-4.2.3/lib/action_view/template.rb:143:in `render'
# /home/dm/.rvm/gems/ruby-2.3.0/gems/actionview-4.2.3/lib/action_view/renderer/partial_renderer.rb:339:in `render_partial'
# /home/dm/.rvm/gems/ruby-2.3.0/gems/actionview-4.2.3/lib/action_view/renderer/partial_renderer.rb:310:in `block in render'
# /home/dm/.rvm/gems/ruby-2.3.0/gems/actionview-4.2.3/lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
# /home/dm/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.3/lib/active_support/notifications.rb:164:in `block …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一个页面会弹出一个模式,该页面将更新其中的一些内容并在不确定的时间后自行关闭(并变得不可见)。在我的规范中,我试图等到模式解除。我的策略是让 Capybara 等待模态上的内容变得不可见
expect(page).to have_css('.hidden-element', visible: :hidden, text: 'Hidden Content')
Run Code Online (Sandbox Code Playgroud)
但是,看起来 Capybara 将无法获取隐藏元素的文本,并且我收到错误消息:
expected to find css ".hidden-element" with text "Hidden Content" but there were no matches. Also found "", which matched the selector but not all filters.
Run Code Online (Sandbox Code Playgroud)
如果我做:allor false,它会通过,但这不是我想要的:
expected to find css ".hidden-element" with text "Hidden Content" but there were no matches. Also found "", which matched the selector but not all filters.
Run Code Online (Sandbox Code Playgroud)
鉴于我无法更改我的应用程序,我想知道为什么这不起作用,或者在这种情况下实现这一目标的最佳方法是什么。谢谢!
我正在使用 RSpec、Capybara、Capybara-webkit。