1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-02-24 13:23:59 +00:00

SELECT matched as form inputs but hasnot type attribute. #111

This commit is contained in:
Daniel Graña 2012-04-15 00:47:30 -03:00
parent 39395eb4f7
commit 5b0df465e7
2 changed files with 19 additions and 8 deletions

View File

@ -93,7 +93,7 @@ def _get_clickable(clickdata, form):
if the latter is given. If not, it returns the first
clickable element found
"""
clickables = [el for el in form.inputs if el.type == 'submit']
clickables = [el for el in form.xpath('.//input[@type="submit"]')]
if not clickables:
return

View File

@ -338,27 +338,38 @@ class FormRequestTest(RequestTest):
urlargs = cgi.parse_qs(urlparse(r1.url).query)
self.assertTrue(urlargs[u'price in \u00a3'.encode('utf-8')])
def test_from_response_with_select(self):
body = u"""
<form name="form1">
<select name="inputname"><option selected="selected" value="inputvalue">text</option></select>
<input type="submit" name="clickable" value="clicked">
</form>
"""
res = HtmlResponse("http://example.com", body=body, encoding='utf-8')
req = self.request_class.from_response(res)
urlargs = cgi.parse_qs(urlparse(req.url).query)
self.assertEqual(urlargs['inputname'], ['inputvalue'])
def test_from_response_multiple_forms_clickdata(self):
body = u"""
<form name="form1">
<input type="submit" name="clickable" value="clicked">
<input type="submit" name="clickable" value="clicked1">
<input type="hidden" name="field1" value="value1">
</form>
<form name="form2">
<input type="submit" name="clickable" value="clicked">
<input type="submit" name="clickable" value="clicked2">
<input type="hidden" name="field2" value="value2">
</form>
"""
res = HtmlResponse("http://example.com", body=body, encoding='utf-8')
req = self.request_class.from_response(res, \
formname='form2', \
clickdata={'name': 'clickable'})
req = self.request_class.from_response(res, formname='form2', \
clickdata={'name': 'clickable'})
urlargs = cgi.parse_qs(urlparse(req.url).query)
self.assertEqual(urlargs['clickable'], ['clicked'])
self.assertEqual(urlargs['clickable'], ['clicked2'])
self.assertEqual(urlargs['field2'], ['value2'])
self.assertFalse('field1' in urlargs, urlargs)
def test_from_response_multiple_forms_clickdata(self):
def test_from_response_override_clickable(self):
body = u'<form><input type="submit" name="clickme" value="one"></form>'
res = HtmlResponse("http://example.com", body=body, encoding='utf-8')
req = self.request_class.from_response(res, \