My slides from Agile Tour Toronto 2011 on creating maintainable automation. Essentially, - use page objects - use id attributes rather than structural locators - implicit waits can help, but are also semi-evil - don't automate stuff you should not be automating