【问题标题】:Ruby/Watir - Formatting print from an arrayRuby/Watir - 从数组格式化打印
【发布时间】:2010-06-22 17:16:41
【问题描述】:

我正在使用 Watir 对网站进行一些自动化测试。这个特定的测试我从 Excel 工作表中提取一组 sku 数字,然后从数组中随机选择一个作为我的测试。该号码被放置在搜索字段中,它会拉回我的产品。

这是我的问题: 我从 Excel 中提取数据并在控制台中打印数据以验证是否收集了正确的数据。行 当 sku 被放入网站的搜索框时,它的格式如下: [“000000”]

我需要去掉方括号和引号。

我研究了漂亮的印刷品,尽管这样可以解决问题。这是我添加的漂亮打印:

def pretty_print(q)
        q.group(1, '[','"','"',']') {
        q.seplist(self) {|v|
        q.pp v
      }
    }
   end

这是从数组中获取 sku 的代码,以及我尝试将上面的漂亮打印方法应用于字符串“sk”:

puts = "Data path : " + path
  workbook = excel.Workbooks.Open(path)
  worksheet = workbook.WorkSheets(1)
  worksheet.Select 
  puts "getting 2D Array from column range a2:a100 in sheet 2"
  sku1 = worksheet.Range("a2:a5").Value
  puts (sku1)

  $count = 1

  $count.times do |count|
    sk = sku1[rand(sku1.length)] 

    method_name = :"test_#{count}_#{sk}"  
    define_method method_name do
      pp (sk)
      search_string = sk

非常感谢任何帮助!!!

【问题讨论】:

    标签: ruby excel arrays watir


    【解决方案1】:

    创建 sk 时,它是一个数组而不是字符串。应该可以做到:

    sk = sku1[rand(sku1.length)].to_s

    【讨论】:

      【解决方案2】:

      我一定是误解了一些东西,但这不只是一个简单的正则表达式吗? skus总是6位数吗?在这种情况下,您可以使用:

      s.match(/\d{6}/).to_s
      

      s.scan(/\d{6}/).first
      

      如果它们是 1 到 6 位的可变长度数字,您可以使用:

      s.scan(/\d{1,6}/).first
      

      HTH

      【讨论】:

      • 我不知道我的头在哪里。谢谢你们!
      猜你喜欢
      • 2013-01-31
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 2018-10-23
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      相关资源
      最近更新 更多