Comment obtenir du texte avec le pilote Web sélénium en python


88

J'essaie d'obtenir du texte en utilisant le pilote Web sélénium et voici mon code. Veuillez noter que je ne veux pas utiliser Xpath, car dans mon cas, l'identifiant est modifié à chaque relance de la page Web, aidez s'il vous plaît.

mon code:

text=driver.find_element_by_class_name("current-stage").getText("my text")

HTML:

<span class="current-text" id="yui_3_7_0_4_1389185744113_384">my text</span>

Réponses:


160

Vous voulez juste .text.

Vous pouvez ensuite le vérifier après l' avoir reçu, n'essayez pas de transmettre ce que vous attendez qu'il ait.


J'obtiens cette erreur - l'objet 'WebDriver' n'a pas d'attribut 'getText'
user3121891

1
@ user3121891, c'est .text.
Arran

J'utilise maintenant ce code: driver.find_element_by_class_name ("current-stage"). Text ("my text") if text: print "pass" else: print "Fail" et obtenant cette erreur - l'objet 'unicode' n'est pas appelable
user3121891

13
@ user3121891 driver.find_element_by_class_name("current-stage").text.... juste du texte seul. Rien d' autre.
Arran

1
Vous allez vouloir parcourir la liste des objets sélénium et appliquer le .textsur chaque élément de la boucle for.
Paul

68

Python

element.text

Java

element.getText()

C #

element.Text

Rubis

element.text

1
Je ne trouve aucune documentation à ce sujet pour Python, où trouvez-vous cela?
Charles Smith

1
@CharlesSmith si vous mettez un .après l'élément dans VSCode, vous recevrez une liste de suggestions basées sur ce que la classe accepte. C'est comme ça que j'ai trouvé ça.
CodeSpent

1
Oui, j'ai remarqué la même chose dans IntelliJ, je me demandais simplement pourquoi ce n'est pas dans la documentation
Charles Smith

9

Je l'ai trouvé, la réponse est

driver.find_element_by_class_name("ctsymbol").text

6

Vous pouvez utiliser:

element = driver.find_element_by_class_name("class_name").text

Cela renverra le texte dans l'élément et vous permettra de le vérifier après cela.


3

Merci, c'est la bonne réponse, cela a fonctionné !!

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome("E:\\Python\\selenium\\webdriver\\chromedriver.exe")
driver.get("https://www.tatacliq.com/global-desi-navy-embroidered-kurta/p-mp000000000876745")
driver.set_page_load_timeout(45)
driver.maximize_window()
driver.implicitly_wait(2)
driver.get_screenshot_as_file("E:\\Python\\Tatacliq.png")
print ("Executed Succesfull")
driver.find_element_by_xpath("//div[@class='pdp-promo-title pdp-title']").click()`enter code here`
SpecialPrice =driver.find_element_by_xpath("//div[@class='pdp-promo-title pdp-title']").text
print(SpecialPrice)

0

J'ai trouvé cela absolument inestimable lorsque je ne pouvais pas récupérer quelque chose dans une classe personnalisée ou changer d'identifiant:

driver.find_element_by_xpath ("// [contains (text (), 'Show Next Date Available')]"). click () driver.find_element_by_xpath ("// [contains (text (), 'Show Next Date Available')] ") .text driver.find_element_by_xpath (" // [contient (text (), 'Disponible')] "). text driver.find_element_by_xpath (" // [contient (text (), 'Disponible')] "). text


Peut-être pourriez-vous marquer votre code comme code en utilisant le marqueur `` ''.
Vivian De Smedt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.