Author christian.heimes
Recipients christian.heimes, robpats, scoder
Date 2021-01-13.10:32:01
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <>
etree's find method supports a limited subset of XPath, . e.find("./*[2]") seems to trigger undefined behavior. The limited XPath syntax for positions is documented as "position predicates must be preceded by a tag name".

lxml behaves the same. Its find() method returns the same value and its xpath() method your expected value:

>>> import lxml.etree
>>> e = lxml.etree.fromstring('<html><div class="row"/><hr/><div/><hr/><div class="row"/><button/></html>')
>>> e.find("./*[2]")
<Element div at 0x7fe4d777b6c0>
>>> e.xpath("./*[2]")
[<Element hr at 0x7fe4d777b2c0>]
Date User Action Args
2021-01-13 10:32:02christian.heimessetrecipients: + christian.heimes, scoder, robpats
2021-01-13 10:32:02christian.heimessetmessageid: <>
2021-01-13 10:32:02christian.heimeslinkissue42893 messages
2021-01-13 10:32:01christian.heimescreate