属性在硒Python中引发NoSuchElementException

时间:2020-04-07 21:45:05

标签: python-3.x selenium attributes nosuchelementexception

我可以获取属性包含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 :(得分:0)

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

答案 1 :(得分:0)

要获取所有链接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)