Как искать заголовок в HTML, используя XPath? - PullRequest
1 голос
/ 15 октября 2019

Я пытаюсь получить текст 'RGF Administrator' из примера HTML ниже. Сложность состоит в том, что заголовок может принимать два значения: «Настройки приложения» или «Параметры приложения». В то же время html может содержать другие элементы с заголовком = «Параметры приложения».

Что я могу использовать для него xPath?

<div>
    <button
    title="Application options">
        <span>
            <span>
                <bdi>
                    RGF Administrator
                </bdi>
            </span>
        </span>
    </button>
</div>

Я использую селен, но не могуопределить xPath для «Администратор RGF».

xpath = "//*[@title='Параметры приложения' or @title='Application options']"

не будет работать, поскольку в то же время html может содержать другие элементы с заголовком = «Опции приложения».

Ответы [ 3 ]

0 голосов
/ 15 октября 2019

Попробуйте это выражение xpath на вашем фактическом xml и посмотрите, работает ли оно:

//div/button[@title = ('Параметры приложения', 'Application options')]//bdi/text()
0 голосов
/ 15 октября 2019

Сколько контейнеров bdi у вас на веб-странице? Если есть только 1, вы можете буквально просто использовать

//bdi

И вам не нужен какой-либо путь.

0 голосов
/ 15 октября 2019

Если вы используете селен, то вам нужно использовать метод get_attribute(string). Так, например, когда вы найдете элементы xpath:

element = driver.find_element_by_xpath("xpath")

, а затем выполните

element.get_attribute("title")

, чтобы получить Application options

...