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>
user3121891
fonte

Respostas:

160

Você quer apenas .text.

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

Arran
fonte
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
Shubham Jain
fonte
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
rearThing
fonte
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.

Kishlaya Kumar
fonte
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)
subhasis
fonte
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

user7693644
fonte
Talvez você possa marcar seu código como código usando o marcador `` `.
Vivian De Smedt