'Click the link as described.  Each of ``description``,
``linkid``, and ``url`` are *patterns*, meaning that they are
either strings (regular expressions), compiled regular
expressions (objects with a ``search`` method), or callables
returning true or false.
All the given patterns are ANDed together:
* ``description`` is a pattern that matches the contents of the
anchor (HTML and all -- everything between ``<a...>`` and
``</a>``)
* ``linkid`` is a pattern that matches the ``id`` attribute of
the anchor.  It will receive the empty string if no id is
given.
* ``href`` is a pattern that matches the ``href`` of the anchor;
the literal content of that attribute, not the fully qualified
attribute.
* ``anchor`` is a pattern that matches the entire anchor, with
its contents.
If more than one link matches, then the ``index`` link is
followed.  If ``index`` is not given and more than one link
matches, or if no link matches, then ``IndexError`` will be
raised.
If you give ``verbose`` then messages will be printed about
each link, and why it does or doesn\'t match.  If you use
``app.click(verbose=True)`` you\'ll see a list of all the
links.
You can use multiple criteria to essentially assert multiple
aspects about the link, e.g., where the link\'s destination is.'

def click(self, description=None, linkid=None, href=None, anchor=None, index=None, verbose=False):

    __tracebackhide__ = True
    (found_html, found_desc, found_attrs) = self._find_element(tag='a', href_attr='href', href_extract=None, content=description, id=linkid, href_pattern=href, html_pattern=anchor, index=index, verbose=verbose)
    return self.goto(found_attrs['uri'])
