Cómo obtener texto con el controlador web selenium en python

88

Estoy tratando de obtener texto usando el controlador web selenium y aquí está mi código. Tenga en cuenta que no quiero usar Xpath, porque en mi caso, la identificación cambia en cada relanzamiento de la página web, ayuda por favor.

mi código:

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>
usuario3121891
fuente

Respuestas:

160

Quieres solo .text.

Luego, puede verificarlo después de obtenerlo, no intente pasar lo que espera que tenga.

Arran
fuente
Recibo este error: el objeto 'WebDriver' no tiene el atributo 'getText'
user3121891
1
@ user3121891, es .text.
Arran
Ahora estoy usando este código: driver.find_element_by_class_name ("current-stage"). Text ("my text") if text: print "pass" else: print "Fail" y obteniendo este error - el objeto 'unicode' no es invocable
user3121891
13
@ user3121891 driver.find_element_by_class_name("current-stage").text.... solo envía un mensaje de texto . Nada mas.
Arran
1
Querrá recorrer la lista de objetos de selenio y aplicar el .texten cada elemento del bucle for.
Paul
68

Pitón

element.text

Java

element.getText()

C#

element.Text

Rubí

element.text
Shubham Jain
fuente
1
No puedo encontrar ninguna documentación sobre esto para Python, ¿dónde están encontrando esto?
Charles Smith
1
@CharlesSmith, si coloca un .después del elemento en VSCode, se le dará una lista de sugerencias basadas en lo que acepta la clase. Así es como encontré esto.
CodeSpent
1
Sí, noté lo mismo en IntelliJ, me preguntaba por qué no está en los documentos
Charles Smith
9

Lo encontré, la respuesta es

driver.find_element_by_class_name("ctsymbol").text
trasero
fuente
6

Puedes usar:

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

Esto devolverá el texto dentro del elemento y le permitirá verificarlo después de eso.

kishlaya kumar
fuente
3

Gracias, esta es la respuesta correcta, ¡funcionó!

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
fuente
0

Encontré esto absolutamente invaluable cuando no puedo tomar algo en una clase personalizada o cambiar las identificaciones:

driver.find_element_by_xpath ("// [contiene (text (), 'Mostrar próxima fecha disponible')]"). click () driver.find_element_by_xpath ("// [contiene (texto (), 'Mostrar próxima fecha disponible')] ") .text driver.find_element_by_xpath (" // [contiene (texto (), 'Disponible')] "). texto driver.find_element_by_xpath (" // [contiene (texto (), 'Disponible')] "). texto

usuario7693644
fuente
Tal vez podría marcar su código como código usando el marcador `` `.
Vivian De Smedt