/ / Watir - Logowanie poza metodą - ruby, testowanie, automatyzacja, watir, logowanie

Watir - Logowanie poza metodą - ruby, testowanie, automatyzacja, watir, logowanie

Wciąż jestem całkiem nowy w używaniu Watir do testowania automatyzacji i napotkałem kolejny, prawdopodobnie szalenie łatwy problem, który muszę dotrzeć do społeczności, aby uzyskać mały skok we właściwym kierunku.

Próbuję użyć rejestratora w Watir, który może działać dobrze, jeśli utrzymam wszystko w metodach. Jeśli nie mam zdefiniowanej metody, na przykład podczas używania pętli, nie mogę uruchomić rejestratora.

Oto przykładowy kod, którym się bawię:

    $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

Oto wprowadzone przeze mnie modyfikacje, które obecnie zawodzą:

$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

Dzięki!

Odpowiedzi:

0 dla odpowiedzi № 1

Wygląda na to, że masz problem z zakresem.Kiedy definiujesz zmienną wewnątrz metody lub pętli, jest to zmienna lokalna, która istnieje tylko w ramach tej metody lub pętli. Po zakończeniu metody lub pętli zmienna zniknie. $ Logger trzeba będzie zadeklarować poza konfiguracją metoda, aby była dostępna poza tą metodą.