我想在ubuntu 12.04上安装capybara-webkit,但是我收到了这个错误:
$ gem install capybara-webkit -v '1.0.0'
Building native extensions. This could take a while...
ERROR: Error installing capybara-webkit:
ERROR: Failed to build gem native extension.
/home/samir/.rvm/rubies/ruby-2.1.0/bin/ruby extconf.rb
Command 'qmake -spec linux-g++' not available
Makefile not found
Gem files will remain installed in /home/samir/.rvm/gems/ruby-2.1.0@dcaclab/gems/capybara-webkit-1.0.0 for inspection.
Results logged to /home/samir/.rvm/gems/ruby-2.1.0@dcaclab/extensions/x86-linux/2.1.0/capybara-webkit-1.0.0/gem_make.out
Run Code Online (Sandbox Code Playgroud)
任何的想法?
有时我的规格可以挂起,我必须杀死相应的ruby过程.当我运行用capybara和webkit驱动程序编写的集成规范时,这很常见.
是否可以检查给定的红宝石过程并查看它挂在哪里?哪种方法,操作,文件,行号等
当我使用capybara-webkit测试我的网站并截取屏幕截图时,CSS中的@ font-face声明将被忽略.
这特别糟糕,因为我使用FontAwesome,因此在真实浏览器中页面的显示方式会有很大差异.
如何重现:https://gist.github.com/anonymous/4948827
输出:http://i.imgur.com/5lsrleY.jpg
有没有什么办法解决这一问题?
如何使用capybara点击链接.我需要点击毕业链接
<a href="/arts?Occasion=Graduation&top_menu_item_title=+-+Graduation">Graduation</a>
Run Code Online (Sandbox Code Playgroud)
我使用了以下代码.但显示错误消息未定义方法 click
page.find(:link,"Graduation").click
Run Code Online (Sandbox Code Playgroud)
也用过Xpath
page.find(:xpath, "//a[@href='/arts?Occasion=Graduation']").click
Run Code Online (Sandbox Code Playgroud)
它也不起作用
但我的问题是我的页面包含毕业的多个链接.
所以用 page.all(:link,"Graduation")returns Ambiguous match, found 2 elements matching link "Graduation"
我试图通过这个规范:
scenario "Edit a service", js: true do
service = create_service_for(provider, title: "First service")
fill_edit_service_form(service)
expect(page).to have_css('#price', text: '10,00 $')
end
Run Code Online (Sandbox Code Playgroud)
这是使用水豚的标准导轨规格.我使用capybara-webkit用于javascript的所有场景.当我试图传递它时,有时候它会起作用,有时它标记的数据库中有一条丢失的记录,有时我有这个错误:
Run options: include {:locations=>{"./spec/acceptances/provider_services_spec.rb"=>[31]}}
[K 1) Provider Services Edit a service
Failure/Error: Unable to find matching line from backtrace
ActiveRecord::StatementInvalid:
PG::TRDeadlockDetected: ERROR: deadlock detected
DETAIL: Process 24164 waits for AccessExclusiveLock on relation 3446991 of database 3446538; blocked by process 24184.
Process 24184 waits for AccessShareLock on relation 3446902 of database 3446538; blocked by process 24164.
HINT: See server …Run Code Online (Sandbox Code Playgroud) 我使用的是rails 4.0.5,rspec 2.14.1,capybara 2.2.1,capybara-webkit 1.1.0和database_cleaner 1.2.0.我通过以下功能测试看到一些奇怪的行为(模拟用户在帖子上查看评论,将鼠标悬停在图标上以显示菜单,然后单击菜单项以删除评论):
let(:user){create(:user)}
let(:post){create(:post, author: user)}
let!(:comment){create(:comment, post: post, author: user)}
...
it "can delete a comment" do
assert(page.has_css? "#comment-#{comment.id}")
find("#comment-#{comment.id}-controls").trigger(:mouseover)
find("#comment-#{comment.id} .comment-delete a").click
assert(page.has_no_css? "#comment-#{comment.id}")
end
Run Code Online (Sandbox Code Playgroud)
这个测试大约80%的时间都失败了,总是由于从数据库中检索到一些记录nil- 我得到的NoMethodError: undefined method X for nil:NilClass,对于X的各种值.有时nil是被删除的注释,有时它是注释附加的帖子到,有时它是评论/帖子的作者.
如果我添加sleep 1到测试结束,它会通过:
it "can delete its own comment" do
assert(page.has_css? "#comment-#{comment.id}")
find("#comment-#{comment.id}-controls").trigger(:mouseover)
find("#comment-#{comment.id} .comment-delete a").click
assert(page.has_no_css? "#comment-#{comment.id}")
sleep 1
end
Run Code Online (Sandbox Code Playgroud)
如果我放入sleep 1一个after区块,它也会通过.
知道为什么我得到这些NoMethodErrors,和/或为什么测试通过,如果我在完成所有工作后让它睡了一秒钟?
我想为我的rails应用程序编写测试用例.我已经在Rails内置框架Minitest中编写了很多测试用例.现在我想测试我的网络应用程序的javascript功能.我遇到了这两个工具
1:Selenium网络驱动程序
2:Capybara-webkit
我很困惑使用哪一个.我知道这两个工具的优点和缺点很少
- Capybara webkit是无头的,而selenium web-driver打开浏览器.
- 水豚比硒快.
- Capybara无法打开任何其他应用程序,而selenium可以与Facebook和LinkedIn等第三方应用程序进行交互
谁能告诉我这两种测试工具的比较?
我正在使用Rails 5.1.1,对于我们想要的rspec功能测试,我们希望在运行所有功能测试之前使用预编译资产.(主要原因是因为capybara-webkit不支持javascript es6功能)
使用RAILS_ENV=test rake assets:precompilecapybara-webkit 成功预编译的资产似乎不使用预编译资产.
config/environment/test.rb看起来像这样
config.assets.prefix = "/assets_test"
config.assets.compile = true
config.serve_static_assets = true
config.assets.js_compressor = Uglifier.new(
harmony: true #es6 support
)
Run Code Online (Sandbox Code Playgroud)
我需要添加什么来测试才能使用预编译资产?
我正在我的页面上使用降价编辑器,我正在尝试定位,并使用capybara-webkit填写,但没有任何运气.
我的模板看起来像这样
<%= simple_form_for form, url: url, method: :put do |f| %>
<%= f.input :notes, as: :text %>
<%= f.button :submit, class: 'fluid' %>
<% end %>
<!-- https://github.com/lepture/editor -->
<link rel="stylesheet" href="//cdn.jsdelivr.net/editor/0.1.0/editor.css">
<script src="//cdn.jsdelivr.net/editor/0.1.0/editor.js"></script>
<script src="//cdn.jsdelivr.net/editor/0.1.0/marked.js"></script>
<script !src="">
(function () {
var editor = new Editor();
editor.render();
})()
</script>
Run Code Online (Sandbox Code Playgroud)
渲染的html(包括执行的编辑器javascript)看起来像这样(通过capybara-webkit调试工具)
<form novalidate="novalidate" class="simple_form simple_form ui form segment new_steps_update" id="new_steps_update" action="/presentations/1/who" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="?"><input type="hidden" name="_method" value="put">
<div class="field text optional steps_update_notes"><label class="text optional" for="steps_update_notes">Notes</label><textarea class="text …Run Code Online (Sandbox Code Playgroud) 我在安装 capybara-webkit gem 时遇到问题。这是我在 gemfile 中的测试组的一部分:
group :test do
gem 'capybara-webkit'
end
Run Code Online (Sandbox Code Playgroud)
当我在控制台上写“捆绑”时 - 它给了我
`"An error occurred while installing capybara-webkit (1.15.1), and Bundler cannot continue. Make sure that `gem install capybara-webkit -v '1.15.1' --source 'https://rubygems.org/'` succeeds before bundling."`
Run Code Online (Sandbox Code Playgroud)
所以我发现我需要通过自制软件安装qt。所以我去了 homebrew-core,写了 'brew update',而不是 'cd $( brew --prefix )/Homebrew/Library/Taps/homebrew/homebrew-core' ;'git 结帐 9ba3d6ef8891e5c15dbdc9333f857b13711d4e97 公式/qt@5.5.rb'; 和'brew install qt@5.5'。然后它给了我'错误:qt@5.5:未知版本:mountain_lion'。我发现问题可能出现在“Formula/qt@5.5.rb”中,它有字符串“depends_on :macos => :mountain_lion”。所以我评论了它,然后当我写 'brew install qt@5.5' 时 - 它给了我另一个错误:
"Error: Failed to download resource "qt@5.5_bottle_manifest""
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?