2013-12-10 96 views
0

您好,出現錯誤,這是不明白的我是新來的紅寶石,所以請幫助。 我檢查了所有可能適用於我的東西。無法在紅寶石程序中找到已安裝的寶石

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 "[email protected]" 
    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>' 
+0

你是如何安裝寶石的?如果它在您的gem文件中,則不需要在腳本的開始處要求它。 – Severin

+0

我沒有使用任何框架,我想用它與簡單的紅寶石腳本..我怎麼能找到它? – user2698907

回答

0

看來你沒有包含完整的源代碼。 除此之外,您的所有代碼在SeleniumTest類中都是空的。您應該將代碼放入適當的方法或方法中。

這種類型的錯誤是在沒有創建對象或方法或者作用域不好時生成的。 就你的情況而言,錯誤消息告訴你腳本的第7行中的對象logger不存在。

正如我從你的源代碼可以看出,第7行屬於類定義。我猜你有類似

logger.log 'logging text' 

在該行,但您從您的文章刪除,並在線路4和5中,您有類似:

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

如果是這樣的話,你可以在類定義中放置logger = Logger.new('file.log'),或者在SeleniumClass類中定義類型爲Logger的實例對象,或者定義一個全局方法或用於記錄消息的其他類型的實例對象。 例子:

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 

...或者類似的東西...

我希望這可以幫助你解決你的問題。 如果沒有,你應該把完整的源代碼,並告訴我們你想做什麼!