Como obter texto com driver da web Selenium em python


88

Estou tentando obter texto usando o driver da web Selenium e aqui está o meu código. Por favor, note que eu não quero usar o Xpath, porque no meu caso o id é alterado a cada reinicialização da página web, ajude por favor.

meu 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>

Respostas:


160

Você quer apenas .text.

Você pode verificar depois de obtê-lo, não tente passar o que você espera que ele deva.


Estou recebendo este erro - o objeto 'WebDriver' não tem atributo 'getText'
user3121891

1
@ user3121891, é .text.
Arran

Agora estou usando este código: driver.find_element_by_class_name ("current-stage"). Text ("meu texto") if text: print "pass" else: print "Fail" e obtendo este erro - o objeto 'unicode' não pode ser chamado
user3121891

13
@ user3121891 driver.find_element_by_class_name("current-stage").text.... apenas texto por conta própria. Mais nada .
Arran

1
Você vai querer percorrer a lista de objetos de selênio e aplicar o .textem cada item do loop for.
Paulo

68

Pitão

element.text

Java

element.getText()

C #

element.Text

Rubi

element.text

1
Não consigo encontrar qualquer documentação sobre isso para Python, onde vocês estão encontrando isso?
Charles Smith,

1
@CharlesSmith se você colocar um .após o elemento no VSCode, receberá uma lista de sugestões com base no que a classe aceita. Foi assim que descobri isso.
CodeSpent

1
Sim, notei o mesmo no IntelliJ, só estava me perguntando por que não está nos documentos
Charles Smith

9

Encontrei, a resposta é

driver.find_element_by_class_name("ctsymbol").text

6

Você pode usar:

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

Isso retornará o texto dentro do elemento e permitirá que você o verifique depois disso.


3

Obrigado esta é a resposta correta funcionou !!

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

Eu achei isso absolutamente inestimável quando não consigo pegar algo em uma classe customizada ou mudar id's:

driver.find_element_by_xpath ("// [contains (text (), 'Mostrar próxima data disponível')]"). click () driver.find_element_by_xpath ("// [contains (text (), 'Mostrar próxima data disponível')] ") .text driver.find_element_by_xpath (" // [contains (text (), 'Disponível')] "). text driver.find_element_by_xpath (" // [contains (text (), 'Avail')] "). text


Talvez você possa marcar seu código como código usando o marcador `` `.
Vivian De Smedt
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.