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:
→ Ссылка