У меня есть эта проблема со скриптом: TypeError: объект «FirefoxWebElement» не повторяется - PullRequest
0 голосов
/ 25 ноября 2018

У меня проблема с выполнением этого скрипта:

pic_hrefs = [elem.get_attribute('a href') for elem in hrefs]

Traceback (most recent call last):
  File "IB.py", line 56, in <module>
    kidCudix.like_photo('comfort')
  File "IB.py", line 41, in like_photo
    pic_hrefs = [elem.get_attribute('a href') for elem in hrefs]
TypeError: 'FirefoxWebElement' object is not iterable

1 Ответ

0 голосов
/ 25 ноября 2018

Во-первых, elem.get_attribute('a href') проблематично, поскольку 'a href' не является допустимым атрибутом.Вместо этого вы хотите использовать elem.get_attribute('href').

Однако это не та ошибка, с которой вы столкнулись.

Сообщение об ошибке (TypeError: 'FirefoxWebElement' object is not iterable) подразумевает, что ваш итеративный ввод (hrefs) имеет тип FirefoxWebElement, что можетне может использоваться с пониманием списка, так как один FirefoxWebElement не повторяется.Вместо одного элемента вам нужно использовать список элементов в вашем понимании списка.(Понимание списка создает список из другого входного итерируемого).Ваше понимание должно быть примерно таким:

hrefs = [elem.get_attribute('href') for elem in elements]

Пример:

Вопрос неопределенный, но вы, вероятно, пытаетесь создать список ссылок на веб-странице.Чтобы получить список всех ссылок, общий шаблон:

  • создать веб-драйвер
  • перейти на страницу
  • найти все элементы, которые представляют теги привязки
  • извлекает атрибут href из каждого элемента и сохраняет их в списке

Это можно сделать с помощью следующего кода:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('https://some_url')
elements = driver.find_elements_by_tag_name('a')
hrefs = [elem.get_attribute('href') for elem in elements]

Обратите внимание, что find_elements_by_tag_name('a')возвращает список из WebElement, который я использую в последующем понимании списка.Также обратите внимание, что используемый метод find_elements_by_tag_name (множественное число).Это отличается от find_element_by_tag_name (единственного числа), в котором будет размещен только один элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...