python-3.x - 无法从硒python中的div元素中找到表格元素
问题描述
我正在尝试使用从元素中选择一个table
值,div
selenium
当我检查元素时,我可以看到元素包含table
但我在查看源代码时找不到它(这是在尝试通过 selenium 访问时发生的)。
检查期间:
下面是我试过的代码,
totals = driver.find_element_by_id("totals")#gets the totals div element. Only one is there
labels=totals.find_elements_by_class_name("hasLabel")#should get the table rows, but it was empty
print(len(labels))#returned 0
但是,它是空的(正如我在源代码中看到的)。作为自动化的一部分,我需要将这些值导出到文件中
有没有其他方法可以提取这些应有的价值?
解决方案
你的观察似乎接近完美。根据您共享的“检查期间”快照中的 HTML,将突出显示文本为“应缴税款”的元素。
在查看通过Selenium提取的源代码快照时,可能甚至在子元素在DOM 树中完全呈现之前,页面源就被拉出:
因此,其中的子元素<div id='totals'></div>
不存在于Page Source中。
文本格式的相关 HTML 将有助于构建规范的答案。<tr>
但是,要获得您需要诱导WebDriverWait的元素总数visibility_of_all_elements_located()
,您可以使用以下任一Locator Strategies:
使用
XPATH
:print(len(WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//table/tbody//tr[@class='hasLabel'][./td[@class='label']]")))))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
推荐阅读
- machine-learning - Keras 在当前迭代中获取数据
- java - 如何让 XStream 将旧的已删除字段映射到不同类型的新字段?
- python - 在创建列表列表时根据索引弹出元素+弹出的项目
- mysql - MySQL:如何通过映射表获取另一个表的列
- php - Laravel 中的样式表
- php - URI 的控制器不可调用 symfony2
- r - 如何在 ggplot2 中增加轴标签和图例大小?
- machine-learning - 如何训练 NER 识别单词不是实体?
- c# - HttpContext 在具有 OmniSharp 扩展的 Visual Studio 代码中的工作方式不同
- python - 使用特定方法对嵌套的对象列表进行排序