Я хочу написать скрипт Ruby, чтобы проверить, найден ли слой, найденный в DOM в Firebug для страницы (например: www.google.com
), со значениями хэша, указанными в моем скрипте. Ниже приведен сценарий, рубин я написал:Ошибка выполнения скрипта Ruby
require 'watir'
browser = Watir::Browser.new(:chrome)
browser.goto('www.google.co.in')
#Function
def page_data_layer(browser)
page_layer = {
'host' => 'www.google.co.in',
'hostname' => 'www.google.co.in',
'pathname' => '/',
'protocol' => 'https:'
}
if page_layer.each do |data|
data.has_key?('host')
message.push("#{data['host']} matches")
end
end
return message.join("\n")
end
#Main script
layer = page_data_layer(browser)
layer = Hash.new{|key,value| key[value] =
Hash.new(&key.default_proc)}
layer = browser.execute_script("return _gjwl")
log < layer
Ниже ошибка я получил, когда я побежал srcipt в Netbeans.
C:/Users/ruby_script.rb:17:in `block in page_data_layer': undefined method `has_key?' for ["host", "www.google.co.in"]:Array (NoMethodError)
from C:/Users/ruby_script.rb:16:in `each'
from C:/Users/ruby_script.rb:16:in `page_data_layer'
from C:/Users/ruby_script.rb:26:in `<main>'
То, что я хочу достигнуть, - layer = browser.execute_script("return _gjwl")
вернется все, что доступно в содержании Google сайта для _gjwl
. Хэш должен соответствовать тому, являются ли значения ключа одинаковыми, что есть в содержании сайта google. Поэтому сравните оба и посмотрите, совпадает ли это, обратный проход или сообщение об ошибке
Пожалуйста, помогите. Заранее спасибо.
Это может помочь, если вы можете выяснить, что именно вы пытаетесь достичь. Код кажется фрагментированным, что затрудняет согласование его с описанием. Например, почему вы проверяете ключ в хеше, который вы создали? Почему вы сохраняете переопределение значений переменной слоя? –
@ Justin Ko, чего я хочу достичь, - layer = browser.execute_script («return _gjwl») вернет все, что доступно в содержимом сайта google для _gjwl. Хэш должен соответствовать тому, являются ли значения ключа одинаковыми, что есть в содержании сайта google. Так что сравните оба и посмотрите, совпадает ли это, обратный проход или неудача – user2201935
Кто-нибудь может мне помочь? – user1613245