Christian Heimes <li...@cheimes.de> added the comment:
etree's find method supports a limited subset of XPath, https://docs.python.org/3/library/xml.etree.elementtree.html#supported-xpath-syntax . 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>] ---------- nosy: +christian.heimes, scoder _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue42893> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com