你得到错误,这是不明白的我是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>'
答案 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
...或类似的东西......
我希望这可以帮助您解决问题。 如果没有,你应该把完整的源代码告诉我们你想做什么!