Retour Nom de la classe et le nom d'attribut python sélénium

voix
-2

J'ai un site qui ressemble à ceci et je veux extraire le contenu du champ uid en utilisant le sélénium + + firefox python. Il y a seulement 1 UID par page.

<div class= parent >
   <div class=module profile dcp=1 uid=90>
   ...
   ...
   </div>
</div>

Pour le rendre concret voir ce qui suit:

<div class= parent >
   <div class=module profile dcp=1 uid=[RETURN THIS]>
   ...
   ...
   </div>
</div>

J'ai essayé plusieurs techniques en sélénium, y compris l'utilisation

browser.find_elements_by_name
browser.find_elements_by_xpath
browser.find_elements_by_class_name
browser.find_elements_by_css_selector

Mais aucun d'entre eux sont en mesure de retourner l'UID. Je reçois soit un ensemble vide ou je ne reçois que la classe (par exemple toute la classe du module plutôt que les attributs à l'intérieur du DIV).

J'ai vu certaines personnes recommandent le sélecteur de get_attribute mais je ne réussit pas à l'appliquer à ce cas d'utilisation.

Toute orientation serait appréciée, merci.

Créé 20/10/2018 à 02:52
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
-1

Pour extraire la valeur de l'attribut uid -à- dire le texte 90 vous pouvez utiliser des Locator Stratégies :

  • css_selector:

    myText = browser.find_element_by_css_selector("div.parent>div.module.profile").get_attribute("uid")
    
  • xpath:

    myText = browser.find_element_by_xpath("//div[@class='parent']/div[@class='module profile']").get_attribute("uid")
    

Cependant , il semble que l'attribut uid -à- dire le texte 90 est un élément dynamique de sorte que vous devez induire WebDriverWait pour l' élément visible et vous pouvez utiliser l'une des solutions suivantes:

  • css_selector:

    myText = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.parent>div.module.profile"))).get_attribute("uid")
    
  • xpath:

    myText = WebDriverWait(browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='parent']/div[@class='module profile']"))).get_attribute("uid")
    

Remarque : Vous devez ajouter les importations suivantes:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Créé 20/10/2018 à 07:13
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more