2012-02-20 49 views
0

我是Ruby的新手,需要帮助来访问另一个文件中存在的函数。该方案是我有2个文件可以说test.rb和functions.rb如何使用watir ruby​​中的另一个文件中的一个文件中存在的函数

在test.rb我有下面的代码

require 'rubygems' 
require 'watir' 
require 'win32ole' 
require 'erb' 
require 'ostruct' 
require 'C:\functions' 
include Watir 
U_RL="some url" 
browser 
if 
ie.text.include?"There is a problem with this website's security certificate." 
then 
ie.link(:id, 'overridelink').click 
end 

现在在functions.rb文件我有下面的代码

require 'rubygems' 
require 'watir' 
require 'win32ole' 

include Watir 

def browser 
     ie=IE.new 
     ie.maximize 
     ie.goto U_RL 
     ie.focus 
     ie.bring_to_front 
     ie.wait() 
end 

当我运行test.rb,我得到的错误“未定义的局部变量或方法‘即’主:对象

我可以看到浏览器中打开,甚至提到的网址快到了, 但当 安全警告页面出现它没有点击ie.link(:id,'overridelink'),点击。

请让我知道如何结束这个

+0

请格式化你的代码 – 2012-02-20 13:24:19

回答

0

在你的browser方法的定义,ie范围是局部的方法。它不能在其外部访问。

需要此代码被完全重构,但是现在,你可以只是browser返回ie本地实例,并将其设置在test.rb

functions.rb:

def browser 
     ie=IE.new 
     ie.maximize 
     ie.goto U_RL 
     ie.focus 
     ie.bring_to_front 
     ie.wait() 
     ie # last value is returned in ruby; can be explicit and do `return ie` as well 
end 

test.rb:

ie = browser 
if ie.text.include?"There is a problem with this website's security certificate." 
then 
    ie.link(:id, 'overridelink').click 
end 
+0

(你也可以通过缩进在编辑器中的代码得到这个)我想以上,但我ST中提到的解决方案生病得到相同的消息“未定义的本地变量或方法”,即“为主:对象”请建议是否有任何事情需要更改代码 – anagraj 2012-02-21 05:28:48

+0

嗨..我很抱歉,我没有做正确的。我再次检查它,它的工作原理。感谢您的解决方案。如果您知道有更好或有效的方式,请告诉我。谢谢.. – anagraj 2012-02-21 07:14:21

0

您应该要求第二个文件。像这样

require_relative 'functions' 
相关问题