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.
3 Réponses :
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 .
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?
Essayez d'utiliser xpath
ci-dessous:
get_text = driver.find_element_by_xpath('//*[@class="xyz"]').text print get_text
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"))
Ce n'est pas une syntaxe valide
// div [@ class = 'xyz'] / span.text ()
. Vous devez utiliser// div [@ class = 'xyz'] / span / text ()
ou simplement utiliser cedriver.find_element_by_xpath ("// div [@ class = 'xyz' ] / span "). tex t