[英]Ruby Watir can't find the assert method outside of the running class?
[英]Watir - Logging outside of a method
在使用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
谢谢!
看来您有范围问题。 当您在方法或循环内定义变量时,它是仅存在于该方法或循环内的局部变量。 一旦方法或循环退出,变量就消失了。 您需要在setup方法之外声明$ logger,以使其在该方法之外可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.