如何按下来自消息的输入按钮?我目前的ruby代码段无法正常工作。有什么建议么?如何在黄瓜和红宝石按下输入按钮
黄瓜:
Then I press the enter button
红宝石:
Then /^I press the enter button$/ do
key_is_pressed("Enter")
end
如何按下来自消息的输入按钮?我目前的ruby代码段无法正常工作。有什么建议么?如何在黄瓜和红宝石按下输入按钮
黄瓜:
Then I press the enter button
红宝石:
Then /^I press the enter button$/ do
key_is_pressed("Enter")
end
如果你想发送输入到文本字段,你可以使用
find(".selector").set("something \n") # \n == return key
或者,如果你想something more flexible :
class Capybara::Driver::Selenium < Capybara::Driver::Base
class Capybara::Element < Capybara::Node
def allowed_keys
@allowed_keys ||= %q(option null cancel help backspace
tab clear return enter shift left_shift control left_control
alt left_alt pause escape space page_up page_down end home
left arrow_left uparrow_up right arrow_rightdown arrow_down
insert delete semicolon equals numpad0 numpad1 numpad2 numpad3
numpad4 numpad5 numpad6 numpad7 numpad8 numpad9 multiplyadd
separator subtract decimal divide f1 f2 f3 f4 f5 f6 f7 f8
f9 f10 f11 f12)
end
def send(key)
send_key = []
if key.match(/\[.*\]/i)
key.gsub!(/[\[\]]/,'')
key = key.split(',')
else
key = [key]
end
key.each do |k|
if k.match(/(\'|\")/i)
send_key << k.gsub(/(\"|\')/, '')
elsif allowed_keys.include?(k)
send_key << k.to_sym
else
send_key << "#{k}"
end
end
native.send_keys(send_key)
end
end
end
此外,您可以查看send-keys
,这是一个(或多或少)提供了功能但尽管过时的gem。
不幸的是,这比它应该更难。大多数建议都是隐藏一个按钮,即屏幕外,并用水豚“按”它。 send-keys
不支持跨水豚司机,因为native.send_keys
是不一致的,也没有维护(如果我记得正确)。我认为你最好的选择就是包含jquery模拟,并在你的脚步中注入一个带有水豚的执行脚本。
即(?)
page.execute_script %Q{ $('.myfield').simulate("keydown", { keyCode: $.ui.keyCode.ENTER }) }
https://github.com/jquery/jquery-simulate见和 https://github.com/j-ulrich/jquery-simulate-ext