python - 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>
解决方案
如果您确定,元素的 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
推荐阅读
- css - How to convert color code into actual color
- javascript - 首次输入符号后输入失去焦点
- jquery-selectors - 选择具有相同超元素类的不同元素类型
- yii - 如何在控制器中的邮件下呈现视图?
- c# - EF Core OnDelete Cascade 在简单的一对多关系上失败
- excel - 在数据透视字段上创建命名范围
- javascript - whatsapp://send?text 在 Chrome 中不起作用
- ionic-framework - 带有 *ngIf 的 Ionic 4 表单字段
- c++ - 如何使用 std::allocator_traits::construct 从函数参数创建结构对象?
- python - 如何从 Qtablewidget 中拖动图像并将其添加到场景中?