首页 > 解决方案 > Python Selenium 找不到元素(结果为空)

问题描述

这是我的python代码

elements=driver.find_elements_by_id("folder_c0fb056b-f83a-495e-9db1-dd1b19942eaa")
print(elements)

结果是 [ ]。同样的方法也适用于网站的其他部分,但是当我进入网站内的表格时,它无法正常工作。我可以在这些命令行之前找到并单击一些链接。请看我附上的图片。当您查看 HTML2 时,白框是最后一个附加图像(网页视图)中显示的 div "folder_c0fb056b-f83a-495e-9db1-dd1b19942eaa"。其余的蓝色框是我感兴趣的区域。看起来像

<a id="rptReportFolders_ctl04_rptReports_ctl00_hlReportNameDescription" href="/da2/Reports/ReportResults.aspx?ReportID={b3583c5f-874b-4eca-9548-bf88f99ff7e6}">
    <b>AE-CR Log - Open Items / All Projects</b> 
</a>

HTML

HTML2

网页浏览

标签: pythonseleniumfindelements

解决方案


如果您确定,元素的 id 不是通用的,您可以尝试使用它:

elements = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, "//div[@id='folder_c0fb056b-f83a-495e-9db1-dd1b19942eaa']/div/a")))
for element in elements:
    print(element.text)
    if element.text == 'your text':
        element.click()

此代码片段的主要思想是使用WebDriverWait至少等待 10 秒,直到所有元素都出现在页面上,然后才打印它们的列表。我还提出了另一个选择器,它将定位所有a链接。

注意:您必须添加一些导入:

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

推荐阅读