From e429f630b348b84903f0310e7756c2cc76adf549 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gra=C3=B1a?= Date: Sat, 7 Sep 2013 21:53:27 -0300 Subject: [PATCH] forms: do not submit reset inputs --- scrapy/http/request/form.py | 2 +- scrapy/tests/test_http_request.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/scrapy/http/request/form.py b/scrapy/http/request/form.py index 6ffa4c0c5..5c639a605 100644 --- a/scrapy/http/request/form.py +++ b/scrapy/http/request/form.py @@ -91,7 +91,7 @@ def _get_inputs(form, formdata, dont_click, clickdata, response): inputs = form.xpath('descendant::textarea' '|descendant::select' - '|descendant::input[@type!="submit" and @type!="image" ' + '|descendant::input[@type!="submit" and @type!="image" and @type!="reset"' 'and ((@type!="checkbox" and @type!="radio") or @checked)]') values = [(k, u'' if v is None else v) \ for k, v in (_value(e) for e in inputs) \ diff --git a/scrapy/tests/test_http_request.py b/scrapy/tests/test_http_request.py index 9d2f235cc..d91f2655a 100644 --- a/scrapy/tests/test_http_request.py +++ b/scrapy/tests/test_http_request.py @@ -320,6 +320,18 @@ class FormRequestTest(RequestTest): fs = _qs(req) self.assertEqual(fs, {'i1': ['i1v']}) + def test_from_response_dont_submit_reset_as_input(self): + response = _buildresponse( + """
+ + + + +
""") + req = self.request_class.from_response(response, dont_click=True) + fs = _qs(req) + self.assertEqual(fs, {'i1': ['i1v'], 'i2': ['i2v']}) + def test_from_response_multiple_clickdata(self): response = _buildresponse( """