Tag: capybara webkit

Capybara需要睡觉吗?

显然,根据网页 更新 ,使用最新版本的wait_until , sleep或wait_until无效。 但是,如果我在测试中添加sleep(1)调用,我有一组仅适用于快速计算机的测试。 也就是说,测试看起来像: describe “dosimeters page” do before do click_link(“Dosimeter Read History”, :match=>:first) end … 变 describe “dosimeters page” do before do unix_wait click_link(“Dosimeter Read History”, :match=>:first) end … 我把unix_wait定义为: def unix_wait case RbConfig::CONFIG[‘host_os’] when /darwin/ when /linux-gnu/ sleep(1) end end 问题是,我有一台旧的Ubuntu 12.04四核笔记本电脑在Jenkins上运行这些测试,一切都运行良好,没有unix_wait调用。 测试在运行Ubuntu 13.10和macbook pro笔记本电脑的unix_wait桌面上随机失败,但如果我添加了unix_wait调用,则测试通过。 测试失败本身表示加载失败(即某些运行中缺少css元素,但其他运行中没有),并且当手动加载站点时,被测试的内容实际上有效。 那么这里适当的行动是什么? 显然,测试期间不允许sleep , wait_until也wait_until […]

如何在Rails 5.1中运行无头浏览器系统测试?

Rails 5.1系统测试的文档有点稀疏。 我无法进行执行javascript运行的无头测试。 我认为一种方法需要安装和运行xvf。 但这比我在其他版本的rails中运行capybara时使用的手动设置更多。 实现这一目标最简单的方法是什么?

从capybara-webkit #execute_script访问DOM?

所以我试图测试jQueryUI可排序库触发ajax请求并且我没有成功触发它,我已经尝试使用jquery.simulate.drag-sortable.js库,但无济于事。 我也尝试过执行脚本function,也无济于事。 我试图手动触发可排序的停用事件,因为即使在浏览器中jQuery.trigger()似乎也无法使用它。 执行的脚本是$sortable.sortable(“option”, “deactivate”)(event, ui) ,事件和ui正确注入,当我直接将它输入浏览器时,此代码可以正常工作。 问题似乎源于无法访问DOM。 当我在驱动程序上启用调试模式时,错误是TypeError: ‘[object Object]’ is not a function (evaluating ‘$sortable.sortable(“option”, “deactivate”)(event, ui)’) 。 深入挖掘后发现,Javascript驱动程序无法访问#execute_javascript DOM节点。 当我输入console.log(document.getElementById(‘sortable’)); 响应为’null’ 。 有关如何使用capybara-webkit触发使用deactivate事件的jQueryUI可排序函数的任何想法?

Capybara :: Webkit :: Driver的未定义方法accept_modal

在Rails应用程序中,我使用RSpec(使用Capybara Webkit)来测试Delete链接是否正常工作。 在我的Rails模板中,我有: 这是我的规格: require ‘rails_helper’ describe “Deleting a movie”, js: true do it “destroys the movie and shows the movie listing without the deleted movie” do movie = Movie.create(movie_attributes) visit movie_path(movie) page.accept_confirm do click_link ‘Delete’ end expect(current_path).to eq(movies_path) expect(page).not_to have_text(movie.title) end end 我收到错误: NoMethodError: undefined method `accept_modal’ for # 它使用正确的驱动程序(Webkit),但它似乎没有找到accept_modal (必须由page.accept_confirm )。 我正在使用: capybara […]

attach_file与capybara-webkit的工作方式不正确

我正在尝试将一些文件附加到此输入: 当我使用selenium驱动程序时,我的代码是: attach_file(‘image’, File.absolute_path(‘../pictures/pic1.JPG’)) attach_file(‘image’, File.absolute_path(‘../pictures/pic2.JPG’)) attach_file(‘image’, File.absolute_path(‘../pictures/pic3.JPG’)) 当我使用capybara-webkit时出现问题:由于隐藏了输入并且某些元素与其重叠,我需要更改一些css属性: page.execute_script(“$(‘input[name=image]’).css(‘opacity’,’1′)”) page.execute_script(“$(‘input[name=image]’).css(‘position’,’fixed’)”) page.execute_script(“$(‘input[name=image]’).css(‘top’,’620px’)”) 即使测试通过,图片也不会以正确的方式上传。 如果我使用page.save_screenshot(‘after_upload.png’)来查看发生了什么: 预期结果(使用selenium驱动时的结果) – > 使用capybara-webkit时的实际结果 – >

需要Qt版本5的capybara-webkit的弃用警告

当我运行rspec时,我收到以下消息: The next major version of capybara-webkit will require at least version 5.0 of Qt. You’re using version 4.8.6. 我不知道我在使用Qt,所以不知道升级它的含义。 如何进行升级以及在此之前应采取哪些预防措施?

Capybara-webkit无法处理与bootstrap glyphicon的链接

我有一个链接: link_to %q().html_safe, feed_item, data: {confirm: ‘Are you sure?’,toggle: ‘tooltip’}, method: :delete, title: ‘Delete’, id: ‘delete_post’ 和以下function规范代码 page.accept_confirm do click_link ‘delete_post’ end 我收到以下错误 Capybara::Webkit::ClickFailed: Failed to find position for element /html/body/div[@id=’wrapper’]/div[@id=’page-content-wrapper’]/div/div[@id=’main’]/div[@id=’main_content’]/div[4]/div/div/div[1]/h3/div/a[@id=’delete_post’] 如果我用一些文本(例如“删除”)用glyphicon替换span,则测试有效。 这似乎与Github上未解决的问题有关,可能与CSS覆盖可点击的html元素有关。 但是,我无法理解在这种情况下如何发生这种重叠或如何纠正它。 将图标用于“编辑”或“删除”等常见任务已成为一种常见做法,因此最好找到解决方案。 我该如何解决这个问题?

使用Capybara Webkit 1.3.1测试警报对话框文本

我希望使用Capybara Webkit在警报对话框中测试文本。 我知道accept_js_confirms和reject_js_confirms方法,但我想在执行操作之前评估对话框的内容。 例如,在Selenium中,以下工作: alert = page.driver.browser.switch_to.alert expect(alert.text).to eq t(‘report_periods.edit.delete_confirmation’) alert.accept 我目前正在使用expect(page.driver.confirm_messages).to include t(‘report_periods.edit.delete_confirmation’)来测试同一个对话框的文本,但是,在更新我们的capybara-webkit gem后,我们的测试会输出一个弃用警告: [DEPRECATION] Capybara::Webkit::Driver#confirm_messages is deprecated. Please use Capybara::Session#accept_confirm or Capybara::Session#dismiss_confirm instead. [DEPRECATION] Capybara::Webkit::Driver#confirm_messages is deprecated. Please use Capybara::Session#accept_confirm or Capybara::Session#dismiss_confirm instead. 使用警告中的任何一种方法都不会测试对话框的内容。

RSpec + Capybara请求规格w / JS无法正常工作

使用Javascript时,我无法获得请求规范。 如果我在没有Javascript的情况下运行它们,我的规范就会通过 (该页面可以使用或不使用JS)。 具体来说,当我做Post.should have(1).record这样的断言时,规范就失败了。 Capybara只是不从DB中获取记录,并且在运行之间不会清理数据库。 我已经尝试使用DatabaseCleaner禁用事务管道 – 我猜这是常见的方法。 没有骰子。 我也尝试(并且,理想情况下更喜欢)在没有DatabaseCleaner的情况下运行,使用事务夹具并强制AR在线程之间共享相同的连接( JoséValim描述的补丁 )。 再一次,没有骰子。 此外,我也试过在Capybara-webkit和Selenium之间切换 – 问题仍然存在。 我已经提出了一个只有一个基本的Post脚手架的示例应用程序,它复制了这个问题: https : //github.com/cabgfx/js-specs有一个带有事务夹具和AR共享连接的spec_helper.rb,以及一个spec_helper_database_cleaner。 rb用于其他场景。 我通常使用Spork,但我在spec_helper.rb文件中都禁用了它,只是为了消除潜在的失败点(在两个应用程序中;“真正的”和示例应用程序)。 我在Macbook Air上使用Pow进行本地开发,使用MRI 1.9.3至RVM运行OS X 10.7.3。 (我也试过1.9.2)。 希望我有意义 – 任何指导/帮助/指针都非常感谢!

NameError:未初始化的常量Capybara :: Webkit.configure

我一定不能正确理解这个方法调用的位置。 我有这个test_helper.rb文件 ENV[‘RAILS_ENV’] ||= ‘test’ require File.expand_path(‘../../config/environment’, __FILE__) require ‘rails/test_help’ require ‘minitest/rails/capybara’ require ‘capybara’ require ‘capybara/rails’ require ‘capybara/webkit’ Dir[Rails.root.join(‘test/support/**/*.rb’)].each { |f| require f } Capybara::Webkit.configure do |config| config.allow_unknown_urls end 当我运行rake test时,我收到此错误 NoMethodError:未定义的方法configure’ for Capybara::Webkit:Module /Users/sameer/code/rails/door_app/test/test_helper.rb:XX:in ‘ 看起来我正在做Capybara-webkit Github页面的README中所描述的内容。