Expect can easily save your day, but only consider it as a last resort - when all better ways of interacting are not available : like web scraping, it is quite fragile because the stability of the 'API' is usually far from guaranteed.
Even so, if you've got to get the job done and can worry about architectural issues at a later time, expect is great.
I'm sufficiently involved with Expect that I've collected enough material for an entire book on the subject (serious--I do a lot of writing, and am well aware of what's involved in such a publication); at the same time, I know that jlgreco is EXACTLY right that Expect use is a symptom of a larger problem. Much of what I've already published through the years about Expect is how a particular task that used to be done with Expect now can better be handled with automation-interface-X.