Я не могу использовать метод при перемещении фрагмента кода в другой файл.
Ниже приведенный код работает, поскольку весь код находится в одном файле.
require 'rubygems'
require 'watir'
require 'win32ole'
require 'erb'
require 'ostruct'
require 'C:/classes/html.class'
require 'C:/classes/Xls'
require 'C:/classes/screen_capture'
require 'C:/classes/RequiredRubies'
include Watir
begin
xlFile = XLS.new(Dir.pwd + '/testdata.xls')
myData = xlFile.getRowRecords('a2:z3','Pit')
xlFile.close
myData.each do |record|
@ie = IE.new
@ie.maximize
@ie.goto (record['Url'])
@ie.focus
end
end
InПриведенный выше код «URL» присутствует в именах листов Excel testdata.xls.Приведенный выше код работает просто отлично.Допустим, это имя файла file1.rb
Но я хочу переместить открытие браузера в другой файл, чтобы я не использовал этот код во всех тестовых файлах и использовал его только в одном файле и вызывалот этого ко всем другим испытаниям.Ниже приведено изменение, которое я сделал, но это не работает.
В File1.rb я сохранил
Все необходимые файлы + новый файл, в котором я упомянул общий код для открытия браузера.
require 'C:/function.rb
include Watir
include Commonfunctions
begin
xlFile = XLS.new(Dir.pwd + '/testdata.xls')
myData = xlFile.getRowRecords('a2:z3','Pit')
xlFile.close
myData.each do |record|
openie = openbrowser
end
end
И я создал файл для открытия браузера, который я хочу использовать в качестве обычной функции.Допустим, это имя файла указано в function.rb
Все необходимые файлы + код ниже
include Watir
module Commonfunctions
def openbrowser
@ie = IE.new
@ie.maximize
@ie.goto (record['Url'])
@ie.focus
end
end
Теперь, когда я запускаю свой file1.rb, я получаю следующую ошибку
C:/function.rb:17:in `openbrowser': undefined local variable or method `reco
rd' for main:Object (NameError)
from test.rb:23:in `block in <main>'
from test.rb:21:in `each'
from test.rb:21:in `<main>'
Объект записи записан в другом файле, который является моим диском данных.В этом файле это код, где присутствует запись метода
numRecords = myRange.Rows.Count
(0..numRecords-1).each do |i|
record=[]
areas.each do |area|
record.concat(area[i])
end
#Clean up formatting
record.collect! do |x|
if x.is_a?(Float) and x % 1 == 0
x.to_i.to_s
else
x.to_s.strip
end
end
data << record
end
return data
end
Может ли кто-нибудь помочь мне решить эту проблему.Я хочу переместить все общие функции в один файл и использовать эти функции во всех тестах вместо того, чтобы писать одни и те же функции во всех тестах.