AttributeError: 'str' object has no attribute 'get_attribute'
Доброго времени суток всем читающим. Столкнулся с такой проблемой "AttributeError: 'str' object has no attribute 'get_attribute'" (сразу хочу сказать, что использую python 2-й день и для меня все очевидные вещи не очевидны)
Сама ошибка происходит вот в этом куске кода -
while len(pers) < all:
num_scroll += 1
browser.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", element)
if num_scroll % 10 == 0:
print("!")
#Сохранение пользователей в массив
persons = browser.find_element_by_xpath("/html/body/div[4]/div/div[2]/ul/div/li[1]/div/div[1]/div[2]/div[1]/a").text
for i in range(len(persons)):
pers.append(str(persons[i].get_attribute('href')))
Ответы (2 шт):
Автор решения: Voldemar
→ Ссылка
Попробуйте убрать .text(). Насколько я помню, там возможно использование html().
Автор решения: gil9red
→ Ссылка
Попробуйте так:
xpath = "/html/body/div[4]/div/div[2]/ul/div/li[1]/div/div[1]/div[2]/div[1]/a"
persons = browser.find_elements_by_xpath(xpath)
for person in persons:
pers.append(person.get_attribute('href'))
PS.
- Метод
find_element_by_xpathвернет первое совпадение, а вам, похоже, нужны все поэтому используйтеfind_elements_by_xpath - У строк действительно нет атрибута
get_attribute, а вpersons[i]у вас строка, т.к. вpersons = browser.find_element_by_xpath(...).textбудет строка, а перебирая символы этой строки тоже получите строкуpersons[i].get_attribute('href') - Списки в питоне можно перебирать без индексов, через простую итерацию
for person in persons: