I was trying to test a website with twill and got this at the end of my traceback:
raise BrowserStateError("not viewing HTML")
BrowserStateError: not viewing HTML
After spending a bunch of time making sure that, yes, it was spitting out HTML, I figured out that it specifically means that twill (actually mechanize) doesnt like XHTML.
You can likely fix it by adding this at the top of the script:
b = twill.get_browser()
b._browser._factory.is_html = True
twill.browser = b
Presumably, there's a real reason that check is in place, but works-4-me...