2016-07-19 21 views
0

我编写了一个Ruby脚本来检查Firebug中的DOM在www.jira.com页面中找到的图层是否与我的脚本中声明的哈希值匹配。下面是Ruby脚本我写:Waitr和Jira集成不能生成所需的输出

require 'watir' 

browser = Watir::Browser.new(:chrome) 

browser.goto('https://jira.com') 

JIRA_DATA_LAYER = { 
    'jira' => { 
       'event'  => ['gtm.js', 'gtm.load'], 
       'gtm.start' => '1468949036556', 
       } 
} 

def get_jira_data_layer(get_data_layer) 
    result = [] 

    get_data_layer.each do |data_layer| 
     data_layer.each do |data_layer_key, data_layer_value| 
      result << {"#{data_layer_key}" => data_layer_value} 
     end 
    end 

    return result 
end 

def compare_jira_data_layer(layer, jira_name) 
    message = [] 
    index = 0 

    JIRA_DATA_LAYER[jira_name].each do |jira_key, jira_value| 
     if layer.include?({jira_key => jira_value}) 
      result = 'matches - PASS' 
     else 
      result = 'matches - FAIL' 
     end 

     index += 1 
     message.push("'#{jira_key} => #{jira_value}' #{result}") 
    end 

    return message.join("\n") 
end 

data_layer = browser.execute_script("return dataLayer") 
get_data_layer = get_jira_data_layer(data_layer) 
compare_data_layer = compare_jira_data_layer(get_data_layer, "jira") 
puts compare_data_layer 

我得到以下输出:

'event => ["gtm.js", "gtm.load"]' matches - FAIL 
'gtm.start => 1468949036556' matches - FAIL 

我想下面来实现:

'event => gtm.js' matches - FAIL 
'gtm.start => 1468949036556' matches - FAIL 
+1

请记住,“不起作用”与您所能给出的描述无关。 – tadman

+0

@tadman Oh.Thanks and sorry –

回答

0

你可以简单地改变值为键JIRA_DATA_LAYER,但我想它必须是这样的。

尝试扩展if句子时检查该散列的密钥,并使用is_a?方法检查特定的键的值是否为数组。如果是这样,请通过each这个数组的成员循环。

+0

我真的很感谢你给出的建议,但如果你能给我这个代码,那真的会有很大的帮助 –