Metadata-Version: 1.0
Name: z3c.etestbrowser
Version: 1.4.0
Summary: Extensions for zope.testbrowser
Home-page: http://cheeseshop.python.org/pypi/z3c.etestbrowser
Author: Christian Theune
Author-email: ct@gocept.com
License: ZPL 2.1
Description: =====================================
        Extensions for the Zope 3 testbrowser
        =====================================
        
        This package is intended to provide extended versions of the Zope 3
        testbrowser. Especially those extensions that introduce dependencies to more
        external products, like lxml.
        
        .. contents::
        
        Extension: lxml-support
        =======================
        
        All HTML pages are parsed and provided as an element-tree.
        
        
        ====================
        Extended testbrowser
        ====================
        
        This package provides some extensions to Zope 3's testbrowser. It is intended
        for extensions that have dependencies that we do not want to rely on in the
        Zope 3 core e.g. lxml.
        
        
        Requirements
        ============
        
        - lxml
        
        
        etree support
        =============
        
        The extended test browser allows parsing of the result of a request into an
        etree using lxml (if the content type is text/html or text/xml).
        
        This is useful to perform more detailed analysis of web pages using e.g. XPath
        and related XML technologies.
        
        Example:
        
        >>> from z3c.etestbrowser.testing import ExtendedTestBrowser
        >>> browser = ExtendedTestBrowser()
        >>> browser.open("http://localhost/")
        >>> print browser.contents
        <!DOCTYPE ...>
        ...
        </html>
        >>> browser.etree
        <Element html at ...>
        >>> browser.etree.xpath('//body')
        [<Element body at ...>]
        
        
        Strict XML
        ----------
        
        It is possible to force the test browser to use the xml parser:
        
        >>> browser.xml_strict
        False
        >>> browser.xml_strict = True
        >>> browser.open("http://localhost/")
        >>> browser.etree
        <Element {http://www.w3.org/1999/xhtml}html at ...>
        >>> browser.etree.xpath(
        ...     '//html:body', namespaces={'html': 'http://www.w3.org/1999/xhtml'})
        [<Element {http://www.w3.org/1999/xhtml}body at ...>]
        
        LXML unicode support
        --------------------
        
        A couple of variations of libxml2 might interpret UTF-8 encoded strings
        incorrectly. We have a workaround for that. Let's have a look at a view that
        contains a German umlaut:
        
        >>> browser.xml_strict = False
        >>> browser.open('http://localhost/lxml.html')
        >>> browser.etree.xpath("//span")[0].text
        u'K\xfcgelblitz.'
        
        Invalid XML/HTML responses
        --------------------------
        
        Responses that contain a body with invalid XML/HTML will cause an error when
        accessing the etree or normalized_contents attribute, but will load fine for
        general TestBrowser use:
        
        >>> browser.open("http://localhost/empty.html")
        >>> browser.contents
        ''
        >>> browser.etree
        Traceback (most recent call last):
        XMLSyntaxError: ...
        >>> browser.normalized_contents
        Traceback (most recent call last):
        XMLSyntaxError: ...
        
        
        Pretty printing
        ===============
        
        Sometimes a normal `print` of the browsers contents is hard to read for
        debugging:
        
        >>> browser.open('http://localhost/')
        >>> print browser.contents
        <!DOCTYPE html ...
        ...Name...Title...Created...Modified...
        
        The extended test browser provides a method to provide a formatted version of
        the HTML (using htmllib internally):
        
        >>> browser.pretty_print()
        @import url(http://localhost/@@/zope3_tablelayout.css); User: Fallback
        unauthenticated principal [Login][1] (image)[2] Location:...[top][3] /
        Navigation
        Loading... ... Name Title Created Modified ...
        
        HTML/XML normalization
        ======================
        
        The extended test browser allows normalized output of HTML and XML which makes
        testing examples with HTML or XML a bit easier when unimportant details like
        whitespace are changing:
        
        >>> browser.open('http://localhost/funny.html')
        >>> print browser.contents
        <html>
        <head>
        <title>Foo</title>
        </head>
        <body>
        <h1>
        Title
        </h1>
        </body>
        </html>
        <BLANKLINE>
        
        versus
        
        >>> print browser.normalized_contents
        <html>
        <head>
        <title>Foo</title>
        </head>
        <body>
        <h1>
        Title
        </h1>
        </body>
        </html>
        
        
        =======
        CHANGES
        =======
        
        1.4.0 (2010-07-08)
        ==================
        
        - Took zope.securitypolicy refactoring and zope.testing.doctest deprecation
        into account.
        
        - Added a variant of the ExtendedTestBrowser that speaks HTTP and has much
        fewer dependencies than the existing one, which talks to the publisher.
        
        
        1.3.1 (2010-01-18)
        ==================
        
        - Added doctest to `long_description` to show up on pypi.
        
        1.3.0 (2009-07-23)
        ==================
        
        - Updgraded pacakge to lxml 2.2.
        
        - Fixed bug with `normalized_contents` which would break the `open` function
        of test browser if content wasn't parsable as HTML/XML.
        
        1.2.0 (2008-05-29)
        ==================
        
        - Added `normalized_contents` attribute that reindents and normalizes the
        etree structure of a document and allows easier to read HTML/XML examples in
        doctests.
        
Keywords: zope3 testbrowser lxml
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Zope Public License
Classifier: Programming Language :: Python
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Framework :: Zope3
