2010-07-02 3 views
1

Я по-прежнему довольно нов в использовании Watir для тестирования автоматизации, и я ударил еще одну, возможно, безумно легкую проблему, и мне нужно обратиться к сообществу за небольшим ударом в правильном направлении.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 

Спасибо!

+0

Где вы на самом деле называете метод setup()? Я не вижу его в опубликованном коде. – Jonathan

ответ

0

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

+0

Да, я тоже это пробовал, но я продолжаю получать ошибку, которая заставляет меня поверить, что я должен поместить это в метод для ее работы: BoxDemo.rb: 29: in ' ': undefined method' set_logger 'для n il: NilClass (NoMethodError) от BoxDemo.rb: 8: in '

' Имейте в виду, если я определяю это внутри переменной и использую его в других методах, это действительно работает. Это единственная ситуация, когда я не работал. – r3nrut

Смежные вопросы