Как получить текст из объекта в seleniumbase?

seleniumbase запускает браузер, открывает страницу и вводит запрос в поле поиска. Затем следует по ссылкам в цикле. И затем в каждой ссылке на каждой итерации цикла пытается вытащить h3 из ссылки:

def rel_prods(url, one_data):
with SB(headed=True, uc=True) as driver:
    driver.open(url)
    time.sleep(26)
    driver.type('#header-search', one_data['title'])
    driver.click('button[data-auto = "search-button"]')
    time.sleep(random.uniform(2, 6))
    elements = driver.find_elements('a[data-auto = "snippet-link"]')
    i = 1
    for element in elements:
        try:
            h3_tag = element.get_text('h3')
            print(h3_tag)
            element.click()
            time.sleep(2)
            driver.switch_to_window(i)
            time.sleep(random.uniform(2, 6))
            driver.close()
            driver.switch_to_default_window()
        except Exception as e:
            print(e)

И вот тут вылезает ошибка:

'WebElement' object has no attribute 'get_text'

Кто знает, как это реализовать?

А также команда driver.close() полностью закрывает браузер. Я бы хотел, чтобы закрывалась только текущая вкладка

Не могли бы вы объяснить, что вы подразумеваете под «пытается вытащить h3 из ссылки»?

SiKing 18.04.2024 22:57

но он получает все ссылки со страницы с атрибутом data-auto = "snippet-link" в строке elements = driver.find_elements('a[data-auto = "snippet-link"]') И еще есть тег h3 в каждой из этих ссылок

kuchuluk 18.04.2024 23:02

Итак, вы, вероятно, хотите что-то вроде element.find_element_by_tag_name('h3').get_text.

SiKing 18.04.2024 23:18

find_element_by_tag_name это метод из классического селена. Он недоступен в seleniumbase.

kuchuluk 18.04.2024 23:27

Я не знаком с селеновой базой. .find_element(By.TAG_NAME, 'h3')?

SiKing 18.04.2024 23:39

В этом одном вопросе вы задаете как минимум 3 вопроса, что запрещено при переполнении стека. Вопрос 1: Как получить текст из объекта в seleniumbase? Вопрос 2: Как получить текст из H3 под найденным тегом A. В3: Как закрыть только текущую вкладку? Название вопроса - Q1, так что я ответил именно на него. Если вы хотите получить ответы на другие вопросы, вам нужно будет опубликовать новый вопрос с соответствующими подробностями, минимально воспроизводимым примером, сообщениями об ошибках и т. д.

JeffC 18.04.2024 23:41
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
6
169
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сообщение об ошибке

'WebElement' object has no attribute 'get_text'

сообщает вам, что в WebElement нет метода .get_text(), например.

element.get_text('h3')

не действует.

То, что вы хотите, это

element.text

Спасибо! Вы решили главную проблему. Остальные вопросы были не так важны)

kuchuluk 19.04.2024 00:14

Другие вопросы по теме