我有一个步骤定义:
Then (/^I send '(.?*)' keys$/) do |key|
$browser.send_keys key
end
我在我的功能文件中传递了:shift,:tab
。这对我不起作用。
但是当我有一个步骤定义时
Then (/^I send keys$/) do
key =:shift,:tab
$browser.send_keys key
end
并硬编码该值,它工作正常。可能是什么问题?
答案 0 :(得分:1)
<强>问题强>
问题在于,当Cucumber为您提供key
(在第一步定义中)时,它是一个值为':shift,:tab'的字符串。 Watir只是将其视为文本,因此键入每个字符(而不是解释特殊键)。
相反,第二步定义key
是一个包含2个符号的数组。
您需要从Cucumber步骤中获取字符串并将其操作为符号。
<强>解决方案强>
根据您需要发送的不同密钥序列,以下步骤定义可能就足够了:
Then (/^I send '(.?*)' keys$/) do |key|
key_sequence = key.split(',').map do |key|
if key[0] == ':'
key[1..-1].to_sym
else
key
end
end
$browser.send_keys key_sequence
end
这一步将:
send_keys
方法。