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>

Respuestas:


160

Quieres solo .text.

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


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

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

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.


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)

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


Tal vez podría marcar su código como código usando el marcador `` `.
Vivian De Smedt
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.