【问题标题】:Cannot find table element from div element in selenium python无法从硒python中的div元素中找到表格元素
【发布时间】:2020-01-22 21:09:38
【问题描述】:

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

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


    【解决方案1】:

    您的观察似乎接近完美。根据您共享的 During Inspect 快照中的 HTML,文本为 Taxes Due 的元素被突出显示。


    在您通过Selenium 提取的查看源代码时快照中,页面源可能在子元素完全呈现之前就被拉出在DOM Tree内:

    因此<div id='totals'></div> 中的子元素不存在于页面源中。


    文本格式的相关 HTML 将有助于构建规范的答案。但是,要获得<tr> 元素的总数,您需要为visibility_of_all_elements_located() 诱导WebDriverWait,您可以使用以下任一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
      

    【讨论】:

    • 对不起,我听不懂。能详细点吗。。我在哪里突出显示了付款类型?为了更清晰,我现在更新了我的检查屏幕截图。请检查。
    • @Praveen 查看更新的答案并告诉我状态。
    猜你喜欢
    • 2022-01-23
    • 2019-05-05
    • 2021-08-12
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多