diff --git a/parsel/selector.py b/parsel/selector.py index 151553ed..8d8c6939 100644 --- a/parsel/selector.py +++ b/parsel/selector.py @@ -2,6 +2,8 @@ XPath selectors based on lxml """ +import sys + import six from lxml import etree @@ -175,9 +177,10 @@ def xpath(self, query): try: result = xpathev(query, namespaces=self.namespaces, smart_strings=self._lxml_smart_strings) - except etree.XPathError: - msg = u"Invalid XPath: %s" % query - raise ValueError(msg if six.PY3 else msg.encode("unicode_escape")) + except etree.XPathError as exc: + msg = u"XPath error: %s in %s" % (exc, query) + msg = msg if six.PY3 else msg.encode('unicode_escape') + six.reraise(ValueError, ValueError(msg), sys.exc_info()[2]) if type(result) is not list: result = [result] diff --git a/tox.ini b/tox.ini index fbf1870f..b9c8c1a6 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py27, py33, py34 +envlist = py27, py33, py34, py35 [testenv] deps =