diff --git a/nvchecker_source/htmlparser.py b/nvchecker_source/htmlparser.py
index 077f1e0..104d511 100644
--- a/nvchecker_source/htmlparser.py
+++ b/nvchecker_source/htmlparser.py
@@ -25,10 +25,17 @@ async def get_version_impl(info):
doc = html.fromstring(res.body, base_url=conf['url'], parser=parser)
try:
- version = doc.xpath(conf.get('xpath'))
+ els = doc.xpath(conf.get('xpath'))
except ValueError:
if not conf.get('missing_ok', False):
raise GetVersionError('version string not found.')
except etree.XPathEvalError as e:
raise GetVersionError('bad xpath', exc_info=e)
+
+ version = [
+ str(el)
+ if isinstance(el, str)
+ else str(el.text_content())
+ for el in els
+ ]
return version
diff --git a/tests/test_htmlpasrer.py b/tests/test_htmlpasrer.py
index f3be52b..436c27b 100644
--- a/tests/test_htmlpasrer.py
+++ b/tests/test_htmlpasrer.py
@@ -19,3 +19,11 @@ async def test_xpath_missing_ok(get_version):
"xpath": '//pre[@class="test-is-ok"]/text()',
"missing_ok": True,
}) is None
+
+async def test_xpath_element(get_version):
+ assert await get_version("unifiedremote", {
+ "source": "htmlparser",
+ "url": "http://httpbin.org/",
+ "xpath": '//pre[@class="version"]',
+ }) != None
+