zope.testbrowser
raw JSON → 8.0 verified Mon Apr 27 auth: no python
Programmable web browser for functional black-box testing of WSGI and HTTP applications. Current version 8.0, supports Python >=3.9. Released under Zope Foundation, follows a rolling release cadence.
pip install zope.testbrowser Common errors
error AttributeError: module 'zope.testbrowser' has no attribute 'Browser' ↓
cause Wrong import path. In older versions, Browser was in zope.testbrowser.browser.
fix
Use: from zope.testbrowser import Browser
error ImportError: cannot import name 'Browser' from 'zope.testbrowser' ↓
cause Trying to import WSGI browser incorrectly.
fix
For WSGI: from zope.testbrowser.wsgi import Browser
error TypeError: can't pickle Browser objects ↓
cause Browser uses lxml and cannot be pickled. Serialize test state separately.
fix
Avoid pickling Browser instances. Use string data from page content.
Warnings
breaking In version 8.0, dropped support for Python <3.9. Also removed the old zope.testbrowser.browser module; use zope.testbrowser or zope.testbrowser.wsgi. ↓
fix Update imports: from zope.testbrowser import Browser for HTTP, from zope.testbrowser.wsgi import Browser for WSGI.
gotcha Browser is stateful. Multiple requests share cookies and history. Clear state with browser.clear() or create a new Browser instance. ↓
fix Use browser = Browser(); browser.clear() before a new test scenario.
deprecated The mechanize backend is deprecated. Future versions may rely on requests or similar. Use WSGI browser if possible. ↓
fix Switch to from zope.testbrowser.wsgi import Browser for faster, more reliable tests.
Imports
- Browser
from zope.testbrowser import Browser - browser wrong
from zope.testbrowser import WsgiBrowsercorrectfrom zope.testbrowser.wsgi import Browser as WsgiBrowser
Quickstart
import os
from zope.testbrowser import Browser
browser = Browser()
browser.open('http://example.com')
print(browser.title)
browser.getControl('search').value = 'zope'
browser.getControl('Go').click()