Selenium python - AttributeError
def page():
try:
driver.implicitly_wait(5)
pages = driver.find_element_by_id('searchResults_links')
time.sleep(2)
print(pages, 'pg')
print(pages.text, "pg_t")
except NoSuchElementException:
print('Ошибка получения кол-ва страниц.')
driver.refresh()
page()
else:
print('Вернул')
return pages
print(page().text)
Пытаюсь спарсить количество страниц. Библиотеки устнановлены, функции вызваны. Если ошибок нет, то код работает. Если ошибка с загрузкой страницы есть, то по идее страница должна перезагрузиться и функция должна выполняться заново, пока ошибка не будет устранена. Ниже напишу, что происходит при ошибке:
- функция выполняется второй раз, исполняется
pages = driver.find_element_by_id('searchResults_links') print(pages, 'pg')выдаёт селениум кодprint(pages.text, "pg_t")выдаёт номер страницы. Проблем вроде нету- Возвращается pages
- Должно распечатать pages.text
print(page().text). НО выдаёт ошибку AttributeError: 'NoneType' object has no attribute 'text'. Хотя в фунции всё выдавало без ошибок. В чём проблема?
Ответы (1 шт):
Автор решения: vitaliis
→ Ссылка
1 Если вы хотите получить количество страниц, то надо использовать не
pages = driver.find_element_by_id('searchResults_links'), а
pages = driver.find_elements_by_id('searchResults_links')
и потом брать их len
2 Чтоб высести их количество потом надо сделать
print(len(pages))
3 Если такой локатор как я понял не один (поэтому и find_elements), то текст надо брать у каждого локатора в цикле. К примеру, чтоб достать текст первого локатора, используйте:
expected_text = pages[0].text
а цикл:
for el in pages:
print(el.text)