Watir - вход за пределы метода - PullRequest
1 голос
/ 03 июля 2010

Я все еще довольно новичок в использовании Watir для тестирования автоматизации, и я столкнулся с другой, возможно, безумно легкой проблемой, с которой мне нужно связаться с сообществом для небольшого удара в правильном направлении.

Я пытаюсь использовать регистратор в Watir, который я могу получить, чтобы работать нормально, если я держу все в пределах методов. Если у меня нет определенного метода, например, при использовании цикла, я не могу заставить работать регистратор.

Вот пример кода, с которым я играю:

    $LOAD_PATH << File.dirname(__FILE__)
require 'xls'
require 'watir'

xlFile = XLS.new(Dir.pwd + '/test_XLS_data.xls') #grab the data file in the same dirrectory
myData = xlFile.getRowRecords('Google Search Data','Example')  #pull data records  from excel
xlFile.close


myData.each do |record|
  ie = Watir::IE.start('google.com')
  ie.text_field(:name,'q').set(record['SearchString'])
  ie.button(:value,/Search/i).click
  if ie.contains_text(record['ContainsText'])
    puts "Results of search: '#{record['SearchString']}' contains '#{record['ContainsText']}'"
  else
    puts "Error: could not find text: '#{record['ContainsText']}' in results of search: '#{record['SearchString']}'"
  end
  sleep 3
  ie.close
end

Вот модификации, которые я сделал и которые в настоящее время не работают:

$LOAD_PATH << File.dirname(__FILE__)

require 'xls'
require 'watir'
require 'example_logger1.rb'

def setup
    filePrefix = "xls_log"
    #create a logger 
    $logger = LoggerFactory.start_xml_logger(filePrefix) 
    $ie.set_logger($logger)
 end


 xlFile = XLS.new(Dir.pwd + '/test_XLS_data.xls') #grab the data file in the same dirrectory
 $logger.log("")
 $logger.log("getting data from Excel")
 myData = xlFile.getRowRecords('Google Search Data','Example')  #pull data records  from excel
 xlFile.close


myData.each do |record|
  ie = Watir::IE.start('google.com')
  ie.text_field(:name,'q').set(record['SearchString'])
  ie.button(:value,/Search/i).click
  if ie.contains_text(record['ContainsText'])
    puts "Results of search: '#{record['SearchString']}' contains '#{record['ContainsText']}'"
  else
    puts "Error: could not find text: '#{record['ContainsText']}' in results of search: '#{record['SearchString']}'"
  end
  sleep 3
  ie.close
end

Спасибо!

1 Ответ

0 голосов
/ 07 июля 2010

Похоже, у вас проблема с областью видимости. Когда вы определяете переменную внутри метода или цикла, это локальная переменная, которая существует только внутри этого метода или цикла. Как только метод или цикл завершаются, переменная исчезает. Вам нужно будет объявить $ logger вне метода установки, чтобы он был доступен вне этого метода.

...