使用Selenium时的LoadError:没有要加载的文件 - 规范

时间:2011-03-16 19:43:57

标签: ruby-on-rails-3 selenium rspec

基本上我刚开始学习在Rails 3上使用Selenium,我从Selenium IDE开始并以RSpec格式生成脚本

在运行此脚本之前,我已为selenium-clientSeleniumselenium-railsselenium-webdriver

安装了宝石

但是当我使用rspec命令运行这个脚本时,我得到了

C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:58:in `require': no such file to load -- spec (LoadError)
    from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:58:in `rescue in require'
    from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-client-1.2.18/lib/selenium/rspec/spec_helper.rb:2:in `<top (required)>'
    from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from C:/Users/qsang/Desktop/Code/NextBigThing/spec/Selenium/create_new_user.rb:5:in `<top (required)>'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.5.1/lib/rspec/core/configuration.rb:386:in `load'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.5.1/lib/rspec/core/configuration.rb:386:in `block in load_spec_files'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.5.1/lib/rspec/core/configuration.rb:386:in `map'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.5.1/lib/rspec/core/configuration.rb:386:in `load_spec_files'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.5.1/lib/rspec/core/command_line.rb:18:in `run'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.5.1/lib/rspec/core/runner.rb:55:in `run_in_process'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.5.1/lib/rspec/core/runner.rb:46:in `run'
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rspec-core-2.5.1/lib/rspec/core/runner.rb:10:in `block in autorun'

我试图寻找答案,我发现的唯一一个与我很接近的案例是Selenium Can't Find 'spec' Folder,但还没有人回答。

有人可以帮助我,提前谢谢。

3 个答案:

答案 0 :(得分:4)

问题是您的Rspec版本。 Selenium宝石正在寻找Rspec 1.2.8或更高,但Rspec在2.0中对其类结构进行了剧烈变化。 Selenium正在寻找Rspec 2中不再存在的文件,类和方法。如果你卸载当前版本的Rspec,那么:

gem install rspec -v 1.3.1

它应该解决你的问题。如果你在自动化中使用Rspec做其他事情,那么这可能不是一个可行的选择。

答案 1 :(得分:2)

我也遇到了麻烦。但是我试图独立运行这个而不是在rails3项目中运行。但是我尝试使用ruby 1.9.2。

我实际上是在尝试测试我们想要逐步转换为rails的IIS / ASP网站。第一步是采用我们完美的“Selenese”测试套件,将它们导出为RSpec并使用ruby等运行它们。我是ruby / rails世界的新手,我觉得这非常令人沮丧。我认为几个小时的工作已经变成了几天......

我遵循了类似的策略。但是,我只删除了除require "selenium/client"之外的所有gem和require语句。我还将append_after重命名为afterappend_after方法在selenium/rspec/spec_helper文件中定义(我检查了lib)。

我花了几个小时在网上搜索,但我无法找到require "selenium/rspec/spec_helper"语句失败原因的答案 - 似乎有一个名为spec的东西(我认为曾经被称为RSpec的东西。)

我认为它有效,但缺少一些功能。 spec_helper似乎处理捕获系统状态和其他有用的功能。

我很想知道你在你的 spec_helper文件中添加了什么。你能发贴吗?

答案 2 :(得分:1)

首先我发现Cucumber + Webrat + Selenium guide非常有用

其次,我删除了

require "selenium/rspec/spec_helper"
require "spec/test/unit"

并添加了

require 'spec_helper'

spec {/ p>中包含spec_helper的位置

我还删除了append_after

的所有方法

基本上现在测试用例可以运行,这不是最好的解决方案,但这是我到目前为止所做的。

P.S:需要从http://seleniumhq.org/download/下载Selenium服务器并使用java -jar selenium-server-standalone-2.0b2.jar运行服务器


<强> spec_helper

# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'

# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

RSpec.configure do |config|
  # == Mock Framework
  #
  # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
  #
  # config.mock_with :mocha
  # config.mock_with :flexmock
  # config.mock_with :rr
  config.mock_with :rspec

  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
  config.fixture_path = "#{::Rails.root}/spec/fixtures"

  # If you're not using ActiveRecord, or you'd prefer not to run each of your
  # examples within a transaction, remove the following line or assign false
  # instead of true.
  config.use_transactional_fixtures = true
end