mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-27 03:23:50 +00:00
Modified XPathSelectorLists: adding them should return a new XPathSelectorList
--HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40591
This commit is contained in:
parent
99143ff357
commit
7bd73e0c09
@ -4,7 +4,7 @@ import unittest
|
||||
import libxml2
|
||||
|
||||
from scrapy.http import Response
|
||||
from scrapy.xpath.selector import XmlXPathSelector, HtmlXPathSelector
|
||||
from scrapy.xpath.selector import XmlXPathSelector, HtmlXPathSelector, XPathSelectorList
|
||||
|
||||
class XPathTestCase(unittest.TestCase):
|
||||
|
||||
@ -220,6 +220,15 @@ class XPathTestCase(unittest.TestCase):
|
||||
u'\n ',
|
||||
u'\n pff\n'])
|
||||
|
||||
def test_selectorlist_add(self):
|
||||
'''Adding XPathSelectorLists should return another XPathSelectorList'''
|
||||
hxs = HtmlXPathSelector(text='<html><body><tag1></tag1><tag2></body></html>')
|
||||
xlist1 = XPathSelectorList([hxs.x('/'), hxs.x('//tag1')])
|
||||
xlist2 = XPathSelectorList([hxs.x('/html')])
|
||||
xlist3 = [1, 2, 3]
|
||||
self.assertTrue(isinstance(xlist1 + xlist2, XPathSelectorList))
|
||||
self.assertTrue(isinstance(xlist2 + xlist3, list))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
@ -102,6 +102,12 @@ class XPathSelectorList(list):
|
||||
def __getslice__(self, i, j):
|
||||
return XPathSelectorList(list.__getslice__(self, i, j))
|
||||
|
||||
def __add__(self, other):
|
||||
if isinstance(other, XPathSelectorList):
|
||||
return XPathSelectorList(super(XPathSelectorList, self).__add__(other))
|
||||
else:
|
||||
return super(XPathSelectorList, self).__add__(other)
|
||||
|
||||
def x(self, xpath):
|
||||
"""Perform the given XPath query on each XPathSelector of the list and
|
||||
return a new (flattened) XPathSelectorList of the results"""
|
||||
|
Loading…
x
Reference in New Issue
Block a user