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>
user3121891
la source

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.

Arran
la source
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
Shubham Jain
la source
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
arrière
la source
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.

Kishlaya Kumar
la source
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)
sous-axe
la source
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

user7693644
la source
Peut-être pourriez-vous marquer votre code comme code en utilisant le marqueur `` ''.
Vivian De Smedt