Adam Goucher wrote two great posts that really lay out some critical, foundational things around functional testing, particularly with Selenium. Go read both if you do any sort of functional testing. (Or want to.)
Implicit Waits – understanding how and why Selenium handles waits is important. This post is particularly focused on Adam’s Py.Saunter project, but the crux of the matter is important regardless of whether you’re using Selenium, Watir, or Test Studio. (Shameless plug.) Awesome money quote:
“One of the key benefits of doing functional automation is you, the script creator, gain a greater understanding of the application being automated”
The Great Locator Debate – it’s crucial you define your locators in one and only one spot. Adam walks through pros and cons of defining those locators Globally or Locally in your Page Object class. Money quote:
“The coupling of the locators with the Page Objects should be a tight one and the desire to break that model should be a trigger that perhaps your object model is not as complete as you thought it was.”
Go read both posts.
(And subscribe to Adam’s blog while you’re there…)