So erhalten Sie Text mit dem Selenium-Webtreiber in Python

88

Ich versuche, Text mit dem Selenium-Webtreiber abzurufen, und hier ist mein Code. Bitte beachten Sie, dass ich Xpath nicht verwenden möchte, da in meinem Fall die ID bei jedem Neustart der Webseite geändert wird. Bitte helfen Sie.

Mein 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
quelle

Antworten:

159

Du willst nur .text.

Sie können es dann überprüfen, nachdem Sie es erhalten haben. Versuchen Sie nicht, das zu übergeben, was Sie erwarten .

Arran
quelle
Ich
erhalte
1
@ user3121891, es ist .text.
Arran
Jetzt verwende ich diesen Code: driver.find_element_by_class_name ("current-stage"). Text ("my text") wenn text: print "pass" else: print "Fail" und erhalte diesen Fehler - 'Unicode'-Objekt ist nicht aufrufbar
user3121891
12
@ user3121891 driver.find_element_by_class_name("current-stage").text.... nur Text für sich. Sonst nichts .
Arran
1
Sie möchten die Liste der Selen-Objekte durchlaufen und die .textauf jedes Element der for-Schleife anwenden .
Paul
68

Python

element.text

Java

element.getText()

C #

element.Text

Rubin

element.text
Shubham Jain
quelle
1
Ich kann keine Dokumentation zu Python finden. Wo findet ihr das?
Charles Smith
1
@CharlesSmith Wenn Sie .in VSCode ein nach dem Element setzen, erhalten Sie eine Liste mit Vorschlägen, die darauf basieren, was die Klasse akzeptiert. So habe ich das gefunden.
CodeSpent
1
Ja, ich habe dasselbe in IntelliJ bemerkt und mich nur gefragt, warum es nicht in den Dokumenten steht
Charles Smith
9

Gefunden, die Antwort ist

driver.find_element_by_class_name("ctsymbol").text
Aufzucht
quelle
6

Sie können verwenden:

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

Dadurch wird der Text innerhalb des Elements zurückgegeben und Sie können ihn anschließend überprüfen.

kishlaya kumar
quelle
3

Danke das ist die richtige Antwort es hat funktioniert !!

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)
Subhasis
quelle
0

Ich fand das absolut von unschätzbarem Wert, wenn ich nicht in der Lage bin, etwas in einer benutzerdefinierten Klasse zu finden oder IDs zu ändern:

driver.find_element_by_xpath ("// [enthält (text (), 'Nächstes verfügbares Datum anzeigen')]"). click () driver.find_element_by_xpath ("// [enthält (text (), 'Nächstes verfügbares Datum anzeigen')] ") .text driver.find_element_by_xpath (" // [enthält (text (), 'Available')] "). text driver.find_element_by_xpath (" // [enthält (text (), 'Avail')] "). text

user7693644
quelle
Vielleicht können Sie Ihren Code mit dem `` `Marker als Code markieren.
Vivian De Smedt