Как получить текст с помощью веб-драйвера Selenium в Python

88

Я пытаюсь получить текст с помощью веб-драйвера selenium, и вот мой код. Обратите внимание, что я не хочу использовать Xpath, потому что в моем случае идентификатор меняется при каждом повторном запуске веб-страницы, помогите, пожалуйста.

мой код:

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
источник

Ответы:

160

Вы просто хотите .text.

Затем вы можете проверить его после того, как вы его получите, не пытайтесь передать то, что вы ожидаете, оно должно иметь.

Арран
источник
Я получаю эту ошибку - объект «WebDriver» не имеет атрибута «getText»
user3121891
1
@ user3121891, это .text.
Arran
Теперь я использую этот код: driver.find_element_by_class_name ("current-stage"). Text ("my text") if text: print "pass" else: print "Fail" и получаю эту ошибку - объект 'unicode' не вызывается
user3121891 08
13
@ user3121891 driver.find_element_by_class_name("current-stage").text.... просто текст сам по себе. Больше ничего .
Arran
1
Вам нужно перебрать список объектов селена и применить к .textкаждому элементу цикла for.
Пол
68

Python

element.text

Ява

element.getText()

C #

element.Text

Рубин

element.text
Шубхам Джайн
источник
1
Я не могу найти никакой документации по Python, где вы, ребята, это нашли?
Чарльз Смит
1
@CharlesSmith, если вы поставите .после элемента в VSCode, вам будет предоставлен список предложений в зависимости от того, что принимает класс. Вот как я это нашел.
CodeSpent
1
Да, я заметил то же самое в IntelliJ, просто интересно, почему этого нет в документации
Чарльз Смит
9

Нашел, ответ

driver.find_element_by_class_name("ctsymbol").text
тыл
источник
6

Ты можешь использовать:

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

Это вернет текст внутри элемента и позволит вам проверить его после этого.

Кишлая Кумар
источник
3

Спасибо, это правильный ответ, это сработало!

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

Я считаю это абсолютно бесценным, когда не могу получить что-то в пользовательском классе или изменить идентификатор:

driver.find_element_by_xpath ("// [содержит (text (), 'Показать следующую доступную дату')]"). click () driver.find_element_by_xpath ("// [содержит (text (), 'Показать следующую доступную дату')] ") .text driver.find_element_by_xpath (" // [contains (text (), 'Available')] "). text driver.find_element_by_xpath (" // [содержит (text (), 'Avail')] "). text

user7693644
источник
Возможно, вы могли бы пометить свой код как код, используя маркер ``.
Вивиан Де Смедт,