[Checkins] SVN: zope.testbrowser/trunk/ added Browser.follow(...) as a convenience
Fred Drake
fdrake at gmail.com
Fri Mar 5 10:56:35 EST 2010
Log message for revision 109680:
added Browser.follow(...) as a convenience
Changed:
U zope.testbrowser/trunk/CHANGES.txt
U zope.testbrowser/trunk/src/zope/testbrowser/README.txt
U zope.testbrowser/trunk/src/zope/testbrowser/browser.py
-=-
Modified: zope.testbrowser/trunk/CHANGES.txt
===================================================================
--- zope.testbrowser/trunk/CHANGES.txt 2010-03-05 15:51:33 UTC (rev 109679)
+++ zope.testbrowser/trunk/CHANGES.txt 2010-03-05 15:56:34 UTC (rev 109680)
@@ -2,10 +2,12 @@
CHANGES
=======
-3.7.1 (unreleased)
+3.8.0 (unreleased)
------------------
+- Added ``follow`` convenience method which gets and follows a link.
+
3.7.0 (2009-12-17)
------------------
Modified: zope.testbrowser/trunk/src/zope/testbrowser/README.txt
===================================================================
--- zope.testbrowser/trunk/src/zope/testbrowser/README.txt 2010-03-05 15:51:33 UTC (rev 109679)
+++ zope.testbrowser/trunk/src/zope/testbrowser/README.txt 2010-03-05 15:56:34 UTC (rev 109680)
@@ -326,7 +326,42 @@
...
LinkNotFoundError
+A convenience method is provided to follow links; this uses the same
+arguments as `getLink`, but clicks on the link instead of returning the
+link object.
+ >>> browser.open('http://localhost/@@/testbrowser/navigate.html')
+ >>> browser.contents
+ '...<a href="navigate.html?message=By+Link+Text">Link Text</a>...'
+ >>> browser.follow('Link Text')
+ >>> browser.url
+ 'http://localhost/@@/testbrowser/navigate.html?message=By+Link+Text'
+ >>> browser.contents
+ '...Message: <em>By Link Text</em>...'
+
+ >>> browser.open('http://localhost/@@/testbrowser/navigate.html')
+ >>> browser.follow(url='?message=By+URL')
+ >>> browser.url
+ 'http://localhost/@@/testbrowser/navigate.html?message=By+URL'
+ >>> browser.contents
+ '...Message: <em>By URL</em>...'
+
+ >>> browser.open('http://localhost/@@/testbrowser/navigate.html')
+ >>> browser.follow(id='zope3')
+ >>> browser.url
+ 'http://localhost/@@/testbrowser/navigate.html?message=Zope+3+Name'
+ >>> browser.contents
+ '...Message: <em>Zope 3 Name</em>...'
+
+Attempting to follow links that don't exist raises the same exception as
+asking for the link object:
+
+ >>> browser.follow('This does not exist')
+ Traceback (most recent call last):
+ ...
+ LinkNotFoundError
+
+
Other Navigation
----------------
Modified: zope.testbrowser/trunk/src/zope/testbrowser/browser.py
===================================================================
--- zope.testbrowser/trunk/src/zope/testbrowser/browser.py 2010-03-05 15:51:33 UTC (rev 109679)
+++ zope.testbrowser/trunk/src/zope/testbrowser/browser.py 2010-03-05 15:56:34 UTC (rev 109680)
@@ -328,6 +328,10 @@
args['nr'] = index
return Link(self.mech_browser.find_link(**args), self)
+ def follow(self, *args, **kw):
+ """Select a link and follow it."""
+ self.getLink(*args, **kw).click()
+
def _findByLabel(self, label, forms, include_subcontrols=False):
# forms are iterable of mech_forms
matches = re.compile(r'(^|\b|\W)%s(\b|\W|$)'
More information about the checkins
mailing list