Monday 5 January 2009

Ruby and Watir: Sending keyboard events to an element

Ok, so you need to send certain keyboard events to an element to properly test a webpage, but stuck how to do it?

Ive looked at some tutorials on the web, but there doesn't seem a simple solution.

However, I have been experimenting, and this method seems to work fine.

First off create your Watir::IE object

ie = Watir::IE.new

Then navigate to the page you are testing

ie.goto("mypage.myserver.com")

Grab the descriptor of the element you wish to send a keyboard command to (for example, a text field)

element = ie.textField(:id, "myText")

Now, I found that keyboard events only work if the Watir::IE window is on top and has focus, so for example if we wish to send a "Pageup" keyboard command to the element "myText" we would do so by

ie.bring_to_front
element.focus

element.container.focus
element.container.send_keys("{PGUP}")

This method does require Autoit(http://www.autoitscript.com/autoit3/) to be installed, and a full list of keyboard events can be found here: http://www.autoitscript.com/autoit3/docs/appendix/SendKeys.htm

Christmas Time

Well Christmas time has been and gone, and I must say that spending time with my family after 2 years is ... odd.

First off there are the hours they are awake. I don't mind getting up at 7am, however going to bed at 10pm? Thats the half day mark!

Catching up with childhood friends is also quite surreal. Everyone seems to regress 5 or so years back to the mentality of school children and old rivalries emerge. I don't think I shall be staying so long for Easter.

Well the last weekend has ended, and work begins anew! At least I can crawl out of bed to my office this week as working from my folks kitchen table. The joys of programming for a living.

And on the programming for a living note, I will be posting a tutorial on how to send keyboard events to elements using Watir.