diff --git a/scrapy/trunk/scrapy/http/request/form.py b/scrapy/trunk/scrapy/http/request/form.py index a65fc868a..56322546c 100644 --- a/scrapy/trunk/scrapy/http/request/form.py +++ b/scrapy/trunk/scrapy/http/request/form.py @@ -39,11 +39,11 @@ class FormRequest(Request): forms = ParseFile(StringIO(response.body), response.url, encoding=encoding, backwards_compat=False) if not forms: - raise ValueError("No form control found in %s" % response) + raise ValueError("No
element found in %s" % response) try: form = forms[formnumber] except IndexError: - raise IndexError("No such form number: %d" % formnumber) + raise IndexError("Form number %d not found in %s" % (formnumber, response)) if formdata: for k, v in formdata.iteritems(): for v2 in v if hasattr(v, '__iter__') else [v]: diff --git a/scrapy/trunk/scrapy/tests/test_http_request.py b/scrapy/trunk/scrapy/tests/test_http_request.py index d18349021..f2bc59aab 100644 --- a/scrapy/trunk/scrapy/tests/test_http_request.py +++ b/scrapy/trunk/scrapy/tests/test_http_request.py @@ -234,6 +234,21 @@ class FormRequestTest(unittest.TestCase): self.assertEqual(urlargs['test2'], ['xxx']) self.assertEqual(urlargs['six'], ['seven']) + def test_from_response_errors_noform(self): + respbody = """""" + response = Response("http://www.example.com/lala.html", body=respbody) + self.assertRaises(ValueError, FormRequest.from_response, response) + + def test_from_response_errors_formnumber(self): + respbody = """ + + + + +
+ """ + response = Response("http://www.example.com/lala.html", body=respbody) + self.assertRaises(IndexError, FormRequest.from_response, response, formnumber=1) class XmlRpcRequestTest(unittest.TestCase):