如何在watir ruby中使用一个文件中的函数

如何在watir ruby中使用一个文件中的函数,ruby,internet-explorer,function,watir,Ruby,Internet Explorer,Function,Watir,我是Ruby新手,需要帮助访问另一个文件中的函数。场景是我有2个文件,比如test.rb和functions.rb 在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

我是Ruby新手,需要帮助访问另一个文件中的函数。场景是我有2个文件,比如test.rb和functions.rb

在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
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
现在在functions.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
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时,我得到错误“main:object的未定义局部变量或方法'ie'

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


请告诉我如何处理这个文件。你应该需要第二个文件。像这样

require_relative 'functions'

在您对
browser
方法的定义中,
ie
的范围是该方法的本地范围。不能在该方法之外访问它

此代码需要完全重构,但现在,您可以让
browser
返回
ie
的本地实例,并在test.rb中进行设置

功能.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

请格式化您的代码(您可以通过在编辑器中缩进代码来实现这一点)我尝试了上面提到的解决方案,但仍然收到相同的消息“未定义的局部变量或main:object的方法'ie'“如果在codeHi中有任何内容需要更改,请提出建议。”。。对不起,我做得不对。我又检查了一遍,它正常工作了。谢谢你的解决方案。请让我知道,如果你知道有任何更好或有效的方法来做这件事。谢谢