Атрибут вызывает NoSuchElementException в селене Python - PullRequest
0 голосов
/ 08 апреля 2020

Я могу получить элемент, атрибут которого содержит X, но не могу получить сам атрибут. Почему?

Этот код не вызывает ошибок:

links = browser.find_elements_by_xpath('//div[@aria-label="Conversations"]//a[contains(@data-href, "https://www.messenger.com/t/")]')

Этот код вызывает NoSuchElementException Ошибка:

links = browser.find_elements_by_xpath('//div[@aria-label="Conversations"]//a[contains(@data-href, "https://www.messenger.com/t/")]/@data-href')

Этот код извлечен из главной страницы Messenger с чатами. Я хотел бы получить все ссылки в списке ul ... Я не понимаю ... Любая помощь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Чтобы получить все значения data-href для ссылок, вам необходимо пройти по элементам ссылок и использовать get_attribute()

links = browser.find_elements_by_xpath('//div[@aria-label="Conversations"]//a[contains(@data-href, "https://www.messenger.com/t/")]')
ul_list=[link.get_attribute("data-href") for link in links]
print(ul_list)
0 голосов
/ 08 апреля 2020
wait = WebDriverWait(driver, 20)
lists=wait.until(EC.presence_of_all_elements_located((By.XPATH, '//div[@aria-label="Conversations"]//a[contains(@data-href, "https://www.messenger.com/t/")]/@data-href')))
 for element in lists:
      print element.text

Примечание : добавьте ниже импорта в ваше решение

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
...