У меня есть xpath, который создается путем добавления 3 строк
path_prefix='(.//tr|.//div[not(ancestor::div)][not(descendant::tr)])[3]'
r1=u'Company (Name in which such subsidiary conducts business if other than corporate name): '
path=path=path_prefix+"//*[text()="+"'"+r1+"'"+"]"
Когда я запускаю этот путь в браузере, он прекрасно работает. Но когда я пытаюсь запустить это на селене с помощью execute_javascript, он дает нулевой элемент.
stg="var element=document.evaluate("+'"'+path+'"'+",document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;return element.getBoundingClientRect()"
driver.execute_script(str(stg))
Кроме того, я проверял, когда я запускаю код, мой элемент stg выглядит следующим образом. (добавляется дополнительный '\', но он все равно отлично работает в браузере)
stg='var element=document.evaluate("(.//tr|.//div[not(ancestor::div)][not(descendant::tr)])[3]//*[text()=\'Company (Name in which such subsidiary conducts business if other than corporate name): \']",document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;return element.getBoundingClientRect()'
Редактировать: (Комментарий от ОП)
главная проблема. Я хочу извлечь все текстовые узлы, присутствующие на HTML-странице и их xpath. xpath должен начинаться с html / / / .... Есть ли лучший способ или какая-либо библиотека, которая уже существует.