[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