Having the full error message + backtrace of these errors would be
helpful (especially for the timeouts).
If WebDriver doesn't find elements, it's usually a timing issue. Are
these failures related to elements being added/removed by JS? If so
you'll often need to explicitly wait for the elements to appear before
trying to interact with them. This isn't something you'd catch with
the naked eye. To diagnose the problem you see if adding a short
sleep() before the element lookups does help, and if it does, add a
more robust solution (polling the DOM).
Not being found in the cache is different from the element just not
being found. This means that WebDriver's element reference is outdated
- this could happen if e.g. the page was refreshed, or if the element
was removed and then re-added. In both instances the user should issue
a new find_element command and not rely on the old Element instance
being usable.
It also looks like you're using Capybara. There have been several
threads on their mailing list from people who are seeing
ObsoleteElementErrors, so it may very well be something in the
Capybara code base that is causing this to happen more frequently than
elsewhere (IIRC I've hinted at possible solutions to this in some of
those threads).
About the timeouts, do you know which command timed out? If your page
takes more than 60 seconds to load, then a call to Driver#get will
exceed the default Net::HTTP timeout (used internally for
communication with Firefox) and you'll see a timeout error. That
timeout can be tweaked - check the RubyBindings page on the Selenium
wiki.