Estoy tratando de obtener el texto 'Administrador RGF' del ejemplo html a continuación. La dificultad es que el título puede tomar dos valores: 'Configuración de la aplicación' o 'Параметры приложения'. Al mismo tiempo, html puede contener otros elementos con title = 'Opciones de aplicación'.

¿Que puedo usar xPath para ello?

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

Uso selenio, pero no puedo determinar el xPath para 'Administrador RGF'.

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

No funcionará ya que al mismo tiempo, html puede contener otros elementos con title = 'Opciones de aplicación'.

1
NeverSleeps 15 oct. 2019 a las 16:48

3 respuestas

La mejor respuesta

Pruebe esta expresión xpath en su xml real y vea si funciona:

//div/button[@title = ('Параметры приложения', 'Application options')]//bdi/text()
1
Jack Fleeting 15 oct. 2019 a las 14:16

Si está utilizando selenio, debe usar el método get_attribute(string). Entonces, por ejemplo, cuando encuentre los elementos xpath:

element = driver.find_element_by_xpath("xpath")

Y luego hacer

element.get_attribute("title")

Para obtener Application options

0
Dimitar Veljanovski 15 oct. 2019 a las 14:03

¿Cuántos contenedores bdi tienes en la página web? Si solo hay 1, literalmente puedes usar

//bdi

Y no necesitas ningún camino.

0
JOberloh 15 oct. 2019 a las 15:15