Python Selen - как заставить веб-драйвер использовать XPATH версии 2.0

Я отвечаю на вопрос: Как получить значение переменной, учитывая ее имя в строке? , которая закрыта как дубликат со ссылкой на этот вопрос.

Если рассматриваемые переменные являются частью объекта (например, части класса), то некоторые полезные функции для достижения именно этого: hasattr, getattr и setattr.

Так, например, вы можете иметь:

class Variables(object):
    def __init__(self):
        self.foo = "initial_variable"
    def create_new_var(self,name,value):
        setattr(self,name,value)
    def get_var(self,name):
        if hasattr(self,name):
            return getattr(self,name)
        else:
            raise("Class does not have a variable named: "+name)

Тогда вы можете сделать:

v = Variables()
v.get_var("foo")

"initial_variable"

v.create_new_var(v.foo,"is actually not initial")
v.initial_variable

"на самом деле не является начальным"

blockquote>

2
задан Rahmat Nazali S 24 March 2019 в 00:08
поделиться

1 ответ

К сожалению, в настоящее время привязки python используют lxml для оценки xpath, который поддерживает только

XPath 1.0, XSLT 1.0 и расширения EXSLT через libxml2 и libxslt

Но надежда не потеряна.

См. список ссылок W3C для реализации XML-запросов .

Реализовать поддержку XPath 2.0+ не так уж и сложно, есть ряд опций:

  1. В PiPy есть некоторые модули, которые частично предлагают Функциональность XPath 2.0+.

  2. Существуют некоторые XML / NoSQL-СУБД с открытым исходным кодом, которые реализуют функции XPath / XQuery 2.0, например,

    • Zorba , встраиваемая C ++ реализация XQuery 1.0 / 2.0, которая имеет привязки Python (см. Этот вопрос ),
    • В зависимости от Ваш проект, Седна может быть хорошим выбором.
  3. Вы можете использовать подпроцесс для вызова процессора CLI XML (как предложено здесь ), например, subprocess.call(["saxon", "-o:output.xml", "-s:file.xml", "file.xslt"])

  4. Вы также можете попробовать использовать XSLT / XPath / XQuery с саксонами и / или другими Java XML классами [ 1110] в Jython .

  5. Наконец, вы можете создать свой собственный веб-сервис, который сделает за вас тяжелую работу на языке, таком как Java, .NET и т. Д., Который поставляется с надлежащим XPath 3+.

Я не знаю, подходят ли какие-либо из этих вариантов к тому, что вы ищете, но дайте мне знать, если это поможет. Очень расстраивает, что это не поддерживается только привязками ...

0
ответ дан C. Peck 24 March 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: