如何在黄瓜和按钮中按下输入按钮红宝石

时间:2013-12-16 20:15:44

标签: ruby cucumber

如何按下来自信息的输入按钮?我目前的ruby代码无法正常工作。有什么建议吗?

黄瓜:

Then I press the enter button

红宝石:

Then /^I press the enter button$/ do
  key_is_pressed("Enter")
end

2 个答案:

答案 0 :(得分:1)

如果您尝试将输入发送到文本字段,则可以使用

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,这是一个(或多或少)提供功能的宝石,虽然过时了。

答案 1 :(得分:0)

不幸的是,这比应该的更难。大多数建议是有一个隐藏的按钮,即屏幕外,并用水豚“按”它。 send-keys不适用于带水豚的司机,因为native.send_keys不一致,也没有维护(如果我没记得的话)。我认为我最好的选择是包含jquery模拟并在你的步骤中注入一个执行脚本和capybara。

即。(?)

page.execute_script %Q{ $('.myfield').simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ) }

参见https://github.com/jquery/jquery-simulatehttps://github.com/j-ulrich/jquery-simulate-ext