/ / Watir - Ведення журналу поза методом - ruby, тестування, автоматизація, watir, каротаж

Watir - Ведення журналів за межами методу - rubin, тестування, автоматизація, 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 для відповіді № 1

Схоже, у вас проблема з обмеженням масштабу.Коли ви визначаєте змінну всередині методу або циклу, це "локальна змінна, яка існує лише в межах цього методу або циклу. Після виходу методу або циклу змінної немає. Вам потрібно буде оголосити $ logger поза налаштуванням метод, щоб він був доступний поза цим методом.