Как получить текст с помощью веб-драйвера 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>

Ответы:


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, просто интересно, почему этого нет в документации
Чарльз Смит


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


Возможно, вы могли бы пометить свой код как код, используя маркер ``.
Вивиан Де Смедт,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.