如何按下來自消息的輸入按鈕?我目前的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