代码之家  ›  专栏  ›  技术社区  ›  r3nrut

ruby/watir-从数组中格式化打印

  •  1
  • r3nrut  · 技术社区  · 15 年前

    我正在使用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
    

    非常感谢您的帮助!!!!

    2 回复  |  直到 15 年前
        1
  •  3
  •   marc    15 年前

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

    sk=sku1[兰特(sku1.length)]

        2
  •  1
  •   rainkinz    15 年前

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

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

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

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

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

    高温高压

    推荐文章