When calling the set
method of a text_field in ruby, the text is being entered at a very slow rate in the browser, roughly at 1 character / second.
Environment Information:
- Ubuntu 10.10
- FireFox 3.6.13
- JSSh 0.9
- Ruby 1.9.2p136
- FireWatir 1.7.1
Kindly advice. Thanks in advance.
It is a known bug: WTR-397
Workaround is to use watir-webdriver or to use value=
instead of set
. Example:
browser.text_field(how => what).value= "string"
solve slow key type issue on firewatir:
need to edit the file text_field.rb
enter to the folder
#>cd /usr/lib/ruby/gems/1.8/gems/firewatir-1.7.1/lib/firewatir/elements/
make it writeable
#>chmod 777 text_field.rb
edit the proc def doKeyPress( value )
- put # in front of
@o.fireEvent("onKeyDown")
and @o.fireEvent("onKeyPress")
and @o.fireEvent("onKeyPress")
instead enter fire_key_events
def doKeyPress( value )
begin
max = maxlength
if (max > 0 && value.length > max)
original_value = value
value = original_value[0...max]
element.log " Supplied string is #{suppliedValue.length} chars, which exceeds the max length (#{max}) of the field. Using value: #{value}"
end
rescue
# probably a text area - so it doesnt have a max Length
end
for i in 0..value.length-1
#sleep element.typingspeed # typing speed
c = value[i,1]
#element.log " adding c.chr " + c #.chr.to_s
@o.value = "#{(@o.value.to_s + c)}" #c.chr
fire_key_events #add this
#@o.fireEvent("onKeyDown")
#@o.fireEvent("onKeyPress")
#@o.fireEvent("onKeyUp")
end
now it should work faster