无法在ruby程序中找到已安装的Gem

时间:2013-12-10 08:12:20

标签: ruby selenium capybara capybara-webkit

你得到错误,这是不明白的我是ruby的新手所以请帮忙。 我检查了所有可能的东西。

    require 'rubygems'
    require 'selenium-webdriver'
    require 'test/unit'


    class SeleniumTest < Test::Unit::TestCase

    driver = Selenium::WebDriver.for :firefox


    driver.get "http://localhost:9000/assets/build/index.html#/login"

    element = driver.find_element :name => "email"
    element.send_keys "kaushik@abc.com"
    element = driver.find_element :name => "password"
    element.send_keys "password"
    element.submit


     page.find(:xpath, "//a[@href='#/courses/new']").click
      #click_link ("//a[@href='#/courses/new']")


      puts "Page title is #{driver.title}"
     #page.should have_selector(:link_or_button, ' Create New Course...')
     wait = Selenium::WebDriver::Wait.new(:timeout => 2000)

    driver.quit

    end

收到此错误: -

TestClass.rb:7:in `<class:SeleniumTest>': undefined local variable or method `logger' for SeleniumTest:Class (NameError)
        from TestClass.rb:6:in `<main>'

1 个答案:

答案 0 :(得分:0)

您似乎没有包含完整的源代码。 除此之外,你所有的代码都是在SeleniumTest课程中裸露的。您应该将代码放入适当的方法中。

当未创建对象或方法或未充分确定范围时,会生成此类错误。 在您的情况下,错误消息告诉您脚本的第7行中的对象logger不存在。

正如我从您的源代码中看到的那样,第7行属于类定义。我想你有类似

的东西
logger.log 'logging text'

在该行中但您从帖子中删除它,在第4行和第5行中您有类似的内容:

require 'logger'
logger = Logger.new('file.log')

如果是这种情况,您可以将logger = Logger.new('file.log')放在类定义中,或者在Logger类中定义类型为SeleniumClass的实例对象,或者在全局方法或其他方法中定义用于记录消息。 例子:

class SeleniumTest < Test::Unit::TestCase
    logger = Logger.new('file.log')
    logger.log "logging text"
    ...
end

class SeleniumTest < Test::Unit::TestCase
    def initialize
      @logger = Logger.new('file.log')
    end
    def log(message)
      @logger.log mesage
    end
    ...
    def some_method_with_your_code
      ...
      log "logging text"
      ...
    end
end
st = SeleniumTest.new
st.some_method_with_your_code

...或类似的东西......

我希望这可以帮助您解决问题。 如果没有,你应该把完整的源代码告诉我们你想做什么!