web-dev-qa-db-fra.com

Python Selenium: rechercher des attributs d'objet en utilisant xpath

Je suis nouveau sur xpath, essayant d'obtenir la valeur de la "valeur" en utilisant xpath:

<input type="submit" value="  Search  " class="long searchButton" style="width:190px !important;">

alors qu'il est facile de trouver un élément par "type="submit" comme:

browser.find_elements_by_xpath("//*[@type='submit']")

Je n'ai pas pu trouver comment obtenir les valeurs dont j'ai besoin, comme:

browser.find_elements_by_xpath("//*[@type='submit']/@value")

donne quelque peu une erreur:

expression "//*[@type=\'submit\']/@value" is: [object Attr]. It should be an element

Des idées pour résoudre ceci?

EDIT: Le xpath est correct, mais il "retourne" un attribut obj et comme ce n'est pas un élément, il n'est pas autorisé. Je ne trouve pas de méthode comme get_attr_by_xpath (), ou quelque chose de similaire.

19
root

J'ai finalement utilisé get_attribute("value") comme:

for i in browser.find_elements_by_xpath("//*[@type='submit']"):
    print i.get_attribute("value")
30
root

Ce serait comme ça

browser.find_elements_by_xpath("//*[@type='submit']/@value").text

Mise à jour:

Avec la fonction que vous utilisez, nous ne pouvons extraire l'élément que son attribut. Pour obtenir son attribut, l'expression doit ressembler à ceci

browser.find_elements_by_xpath("//*[@type='submit']").get_attribute("value")

Réf: http://Selenium-python.readthedocs.org/en/latest/api.html#Selenium.webdriver.remote.webelement.WebElement.find_elements_by_tag_name

2
Jayy

Je sais certainement que cela a été publié il y a plus de 2 ans, mais je voudrais en ajouter un peu qui a été omis. Selenium fournit des mots intégrés qui pourraient être utilisés pour extraire le texte entre les balises ou les valeurs d'attribut réelles à l'intérieur des balises.

${XPATH}    xpath=(//td[@title='mytitle']/../td)[2]     

Voici un petit exemple:

${THE_NAME}=       Get Text           ${XPATH} 
1
abeltre1