summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorordinary-jamie <jamie@ordinarylab.dev>2023-03-09 13:07:58 +1100
committerordinary-jamie <jamie@ordinarylab.dev>2023-03-09 13:21:28 +1100
commitb5c16e70e14efc867c089704c3f73fd4cc8eb9d6 (patch)
tree0da53aa53e31db88f629e1623e4bdb1681ada5a7
parent8ef619fff5127af55b66c1e6c4f8568f3a29acf4 (diff)
downloadwebtest-b5c16e70e14efc867c089704c3f73fd4cc8eb9d6.tar.gz
Add TestResponse.clickbutton onclick kwarg
This change allows the TestResponse to follow customised onclick buttons
-rw-r--r--tests/test_response.py4
-rw-r--r--webtest/response.py6
2 files changed, 8 insertions, 2 deletions
diff --git a/tests/test_response.py b/tests/test_response.py
index f2799bb..aa1cb1d 100644
--- a/tests/test_response.py
+++ b/tests/test_response.py
@@ -250,6 +250,10 @@ class TestResponse(unittest.TestCase):
'This is foo.',
app.get('/').clickbutton(buttonid='button1', verbose=True)
)
+ self.assertIn(
+ 'This is foo.',
+ app.get('/').clickbutton(buttonid='button3', onclick=r".*href='(.*?)'", verbose=True)
+ )
self.assertRaises(
IndexError,
app.get('/').clickbutton, buttonid='button2'
diff --git a/webtest/response.py b/webtest/response.py
index d2eee6c..fea35aa 100644
--- a/webtest/response.py
+++ b/webtest/response.py
@@ -159,16 +159,18 @@ class TestResponse(webob.Response):
return self.goto(str(found_attrs['uri']), extra_environ=extra_environ)
def clickbutton(self, description=None, buttonid=None, href=None,
- index=None, verbose=False):
+ onclick=None, index=None, verbose=False):
"""
Like :meth:`~webtest.response.TestResponse.click`, except looks
for link-like buttons.
This kind of button should look like
``<button onclick="...location.href='url'...">``.
"""
+ href_extract = re.compile(onclick) if onclick else re.compile(r"location\.href='(.*?)'")
+
found_html, found_desc, found_attrs = self._find_element(
tag='button', href_attr='onclick',
- href_extract=re.compile(r"location\.href='(.*?)'"),
+ href_extract=href_extract,
content=description,
id=buttonid,
href_pattern=href,