[twill] Capturing Error Output/Nicely
Stephen Thorne
stephen at netboxblue.com
Thu Apr 27 15:12:45 PDT 2006
Terry Peppers wrote:
> I think Titus knows that I really enjoy using Twill. And things are
> heating up here @ work so that we'll end up using it more. But I think
> one of my personal hangups with it is trying to track down errors that
> occur in our application using Twill's 'show' command. I don't know
> about anyone else, but my eyes just glaze over when I look @ HTML in a
> terminal. So I got to thinking, isn't there a better way to do this?
>
> Couldn't I write something in my Python scripts that could take a failed
> assert, output Twill's 'show', Tidy it up and then pass it to Element
> Tree or some other parser and output things that might be relevant to
> me? Maybe the page title or some blocks of text or maybe error messages
> are passed in a <div> block that has a name of 'error.'
>
> Just thinking out loud, and something I'd like to see if others in the
> Twill community are already doing.
Interesting. Hows this?
test_showstuff.twill:
extend_with showstuff
go http://shiny.thorne.id.au/shiny/
tag title
tag_by_id div footer
tags_by_class div post
showstuff.py:
from twill.commands import get_browser
from BeautifulSoup import BeautifulSoup
def textify(node, pre=0):
if isinstance(node, (str, unicode)):
if pre:
return node.strip() + '\n'
else:
return node.strip()
strs = []
for n in node:
strs.append(textify(n, pre=(pre or node.name == 'pre')))
if node.name in ('br', 'p', 'div'):
return ' '.join(strs).strip() + '\n'
else:
return ' '.join(strs).strip()
def get_soup():
return BeautifulSoup(get_browser().get_html())
def tag_by_id(tag, xmlid):
soup = get_soup()
print textify(soup.first('div',{'id':xmlid}))
def tags_by_class(tag, name):
soup = get_soup()
for tag in soup(tag, {'class':name}):
print textify(tag)
def tag(tag):
soup = get_soup()
print textify(soup.first(tag))
__all__ = ['tags_by_class', 'tag_by_id', 'tag']
--
Regards,
Stephen Thorne
Development Engineer
Scanned by the NetBox from NetBox Blue
(http://netboxblue.com/)
More information about the twill
mailing list