Как использовать функцию присутствует в одном файле в другом файле в Watir Ruby - PullRequest
0 голосов
/ 20 февраля 2012

Я новичок в 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, я получаю ошибку «Неопределенная локальная переменная или метод ie» для main: object

Я вижу, что браузер открыт идаже упомянутый выше URL появляется, но когда появляется страница с предупреждением о безопасности, она не нажимает ie.link (: id, 'overridelink'). click.

Пожалуйста, дайте мне знать, как преодолетьэто

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

В вашем определении метода 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 голосов
/ 20 февраля 2012

Вам потребуется второй файл.Как это

require_relative 'functions'
...