我是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
现在在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时,我收到错误“未定义的局部变量或方法”,即'对于main:object
我可以看到浏览器已打开,甚至提到的网址即将出现,但是当安全警告页面出现时,它没有点击ie.link(:id,'overridelink')。点击。
请让我知道如何过来这个
答案 0 :(得分:0)
您应该要求第二个文件。喜欢这个
require_relative 'functions'
答案 1 :(得分: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