Як отримати текст за допомогою веб-драйвера селену в Python


88

Я намагаюся отримати текст за допомогою веб-драйвера селену, і ось мій код. Зверніть увагу, що я не хочу використовувати 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.
Арран

Тепер я використовую цей код: driver.find_element_by_class_name ("поточна стадія"). Text ("мій текст"), якщо text: print "pass" else: print "Fail" і отримання цієї помилки - об'єкт "unicode" не викликається
user3121891

13
@ user3121891 driver.find_element_by_class_name("current-stage").text.... просто надішліть текст самостійно. Більше нічого .
Арран

1
Ви хочете прокрутити список об'єктів селену та застосувати до .textкожного елемента циклу for.
Павло

68

Python

element.text

Java

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 ("// [містить (текст (), 'Показати наступну дату, доступну')]"). натисніть () driver.find_element_by_xpath ("// [містить (текст (), 'Показати наступну дату, доступну')] ") .text driver.find_element_by_xpath (" // [містить (text (), 'Доступний')] "). text driver.find_element_by_xpath (" // [містить (text (), 'Avail')] "). text


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