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() полностью закрывает браузер. Я бы хотел, чтобы закрывалась только текущая вкладка
но он получает все ссылки со страницы с атрибутом data-auto = "snippet-link" в строке elements = driver.find_elements('a[data-auto = "snippet-link"]') И еще есть тег h3 в каждой из этих ссылок
Итак, вы, вероятно, хотите что-то вроде element.find_element_by_tag_name('h3').get_text
.
find_element_by_tag_name это метод из классического селена. Он недоступен в seleniumbase.
Я не знаком с селеновой базой. .find_element(By.TAG_NAME, 'h3')
?
В этом одном вопросе вы задаете как минимум 3 вопроса, что запрещено при переполнении стека. Вопрос 1: Как получить текст из объекта в seleniumbase? Вопрос 2: Как получить текст из H3 под найденным тегом A. В3: Как закрыть только текущую вкладку? Название вопроса - Q1, так что я ответил именно на него. Если вы хотите получить ответы на другие вопросы, вам нужно будет опубликовать новый вопрос с соответствующими подробностями, минимально воспроизводимым примером, сообщениями об ошибках и т. д.
Сообщение об ошибке
'WebElement' object has no attribute 'get_text'
сообщает вам, что в WebElement нет метода .get_text()
, например.
element.get_text('h3')
не действует.
То, что вы хотите, это
element.text
Спасибо! Вы решили главную проблему. Остальные вопросы были не так важны)
Не могли бы вы объяснить, что вы подразумеваете под «пытается вытащить h3 из ссылки»?