Tag: capybara webkit

Capybara webkit的数据库清理问题

我正在使用Cucumber编写我的集成测试和数据库清理程序以保持我的数据库清理。 一切都很完美,因为我的测试不需要Javascript。 我可以使用Capybara webkit让这些最后的测试通过,但是我的数据库根本没有被清除。 这是我的function/ support / env.rb文件: require ‘simplecov’ SimpleCov.start ‘rails’ require ‘cucumber/rails’ Capybara.default_selector = :css Capybara.javascript_driver = :webkit begin require ‘database_cleaner’ require ‘database_cleaner/cucumber’ DatabaseCleaner[:active_record].strategy = :transaction rescue NameError raise “You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it.” end Before do DatabaseCleaner.start end After […]

按数据属性查找元素

我正在使用RSpec和capybara-webkit改进我的测试,尝试删除所有的css和xpath选择器 find(‘#edit_user > div:nth-child(7) > div > div > button’).click 我正在寻找替代它们的最佳选择。 我打算使用css class的元素,但一些“专业”水豚测试人员说这不是最好的选择。 所以我的问题是:我可以在测试中使用data属性吗? 如果我有一个元素 Update/button> 我能做到吗? find(‘edit.update’).click ? 你觉得这是个好主意吗? 如果您对此主题有更多想法/信息,请随时发表评论!

如何使用capybara DSL测试Select2元素?

我在页面上有一个Select2元素,通过ajax加载结果。 想用capybara / rspec(使用poltergeist驱动程序)测试这个,但是因为Select2元素实际上是作为隐藏字段开始的,然后在处理完结果后填充 ,没有正常的select , fill_in或者choose帮手会工作。 我现在拥有的是类似的东西 it “should have a search field for events” do click_link “Select an Event” # this works as expected within(‘.select2-container’) do # works find(‘.select2-search input’).set(event.description[0,5]) # won’t work! find(:xpath, “li[text()=’#{event.description}’]”).click end click_button “Search” page.should have_content(“Displaying all 2 photos”) end 上面的第4行,显然capybara可以找到元素,但值不会改变,Select2永远不会进行ajax调用。 (不能使用普通的fill_in ,因为搜索字段元素没有label,id或name属性)

来自水豚的弃权警告

我正在使用rspec-rails 2.14.0.rc1和capybara 2.4.1从rails 3.2.19升级到rails 4.1.5。 所有测试都通过了,我只剩下一个弃用警告: [DEPRECATION] Capybara::Webkit::Driver#accept_js_confirms! is deprecated. Please use Capybara::Session#accept_confirm instead. 导致这种情况的代码行是 page.driver.accept_js_confirms! 如何更改此行以消除弃用警告?

Capybara webkit无效响应错误,如何调试?

我正在尝试为网页编写请求规范。 此页面正在开发中,没有错误。 但是在capybara webkit中运行后,在尝试提交表单后出现此错误: Failure/Error: Unable to find matching line from backtrace Capybara::Driver::Webkit::WebkitInvalidResponseError: Unable to load URL: https://127.0.0.1:33416/sign_in 为了找出原因,我开始在页面上剥离标记和JavaScript。 到了具有普通提交按钮的空表单的程度。 我仍然得到上述错误! 该测试现在字面上: it “should be able create a new foo”, :js, :focus do visit new_foo_path find(‘#submit’).click end 但是,如果我删除:js选项,此测试确实有效: it “should be able create a new foo”, :focus do visit new_foo_path find(‘#submit’).click end Javascript测试在此应用程序的其他页面中有效… 这对我没有意义。 有没有人有任何建议如何从这里调试? […]

使用FileApi将文件上载到输入区域

我正在使用Capybara + RSpec和capybara_webkit作为驱动程序。 和一个带有FileApi的JS上传器。 我正在尝试上传三张图片: 当我点击“选择照片”按钮(在浏览器上)时,它会打开一个典型的窗口,我可以从我的计算机中选择3个文件。 我想知道如何在水豚上重现它,就像照片选择器打开时一样,我无法控制它。 我试图将图片添加到我的测试文件夹并尝试: attach_file(‘image’, File.absolute_path(‘../pictures/photo1.JPG’)) 但没有结果。

实例化capybara浏览器并设置代理

按照此文档,我正在尝试实例化一个水豚浏览器并设置代理 b = Capybara::Driver::Webkit::Browser.new b.set_proxy :host => ‘localhost’, :port => 8888 不幸的是,文档已经过时,我找不到新的正确方法。 我明白了: NameError: uninitialized constant Capybara::Driver::Webkit::Browser

Capybara-webkit引发了Capybara :: Driver :: Webkit :: WebkitInvalidResponseError

我在我的rspec中收到了来自webkit驱动程序的以下消息: Capybara::Driver::Webkit::WebkitInvalidResponseError: Unable to load URL: http://127.0.0.1:44923/posts 几天前它起作用了。 问题在于save_page方法。 可能有什么不对?

用capybara-webkit检测到死锁

我正试图通过这个规范: 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 这是使用水豚的标准导轨规格。 我使用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 […]

vcr与capybara-webkit

我正在使用capybara-webkit测试与第三方网站的集成(我需要javascript)。 我想使用vcr来记录在集成测试期间发出的请求,但是capybara-webkit没有超过net http,因此vcr无法记录它们。 我如何为vcr编写适配器以便记录所需的内容?