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