1
votes

Récupérer le texte de l'élément de balise

J'ai une table dans laquelle chaque ligne a un xpath et dans chaque ligne une colonne est incorporée. Il y a une balise dans xpath de la ligne qui change le texte en fonction de ce que vous choisissez sur cette page.

<div class='xyz'>
  <span> some text </span>
</div>

Je fais // div [@ class = 'xyz'] / span. text ()

Cependant, je ne parviens pas à récupérer le texte d'ici.

J'utilise python avec VSCode.


1 commentaires

Ce n'est pas une syntaxe valide // div [@ class = 'xyz'] / span.text () . Vous devez utiliser // div [@ class = 'xyz'] / span / text () ou simplement utiliser ce driver.find_element_by_xpath ("// div [@ class = 'xyz' ] / span "). tex‌ t


3 Réponses :


2
votes

La syntaxe pour obtenir le texte de la balise span en utilisant xpath est incorrecte.

Ceci est le bon xpath ,

span_text = driver.find_element_by_xpath("//div[@class='xyz']/span").text

Ou vous pouvez utiliser .text avec le pilote Web find_element_by_xpath pour extraire du texte.

//div[@class='xyz']/span/text()

Si / span est le seul élément enfant de // div [@ class = 'xyz'] alors vous pouvez utiliser ce chemin à la place de celui ci-dessus driver.find_element_by_xpath("//div[@class='xyz'letter").text

Vous pouvez découvrir comment utiliser xpath avec le pilote Web Selenium ici .


2 commentaires

Merci, j'utilise certainement "span_text = driver.find_element_by_xpath (" // div [@ class = 'xyz'] / span "). Tex‌ t" mais il ne l'obtient pas.


@Aboyhasnoname Puis-je avoir l'adresse du site Web que vous grattez?



1
votes

Essayez d'utiliser xpath ci-dessous:

get_text = driver.find_element_by_xpath('//*[@class="xyz"]').text
print get_text


0 commentaires

0
votes

Pour extraire le texte du texte de l'élément souhaité, vous devez induire WebDriverWait pour le visibilité_of_element_located () et vous pouvez utiliser l'un des les Stratégies de localisation :

  • Utilisation de CSS_SELECTOR :

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Utilisation de XPATH :

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='xyz']/span"))).get_attribute("innerHTML"))
    
  • Remarque : vous devez ajouter les importations suivantes:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.xyz>span"))).get_attribute("innerHTML"))
    


0 commentaires