首页 > 解决方案 > 无法从硒python中的div元素中找到表格元素

问题描述

我正在尝试使用从元素中选择一个table值,divselenium

当我检查元素时,我可以看到元素包含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

但是,它是空的(正如我在源代码中看到的)。作为自动化的一部分,我需要将这些值导出到文件中

有没有其他方法可以提取这些应有的价值?

标签: python-3.xseleniumselenium-chromedriver

解决方案


你的观察似乎接近完美。根据您共享的“检查期间”快照中的 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
    

推荐阅读