【问题标题】:Selenium Python: How can I count the number of tables in a div?Selenium Python:如何计算 div 中的表数?
【发布时间】:2019-10-07 01:37:01
【问题描述】:

我正在尝试使用 Xpath 查找一个元素,但它的变化如下:

//*[@id="emailwrapper"]/div/div/table[1]/tbody/tr/td[2]/a
//*[@id="emailwrapper"]/div/div/table[2]/tbody/tr/td[2]/a
//*[@id="emailwrapper"]/div/div/table[3]/tbody/tr/td[2]/a
//*[@id="emailwrapper"]/div/div/table[4]/tbody/tr/td[2]/a
//*[@id="emailwrapper"]/div/div/table[5]/tbody/tr/td[2]/a
//*[@id="emailwrapper"]/div/div/table[6]/tbody/tr/td[2]/a

我目前的假设是我要查找的表将始终是表数组中的最后一个,但我想通过计算第二个 div 中的表数来确认这一点。有谁知道怎么做?

【问题讨论】:

    标签: python selenium xpath selenium-chromedriver


    【解决方案1】:

    简单的解决方案是使用下面的 xpath。

    //*[@id='emailwrapper']/div/div/table
    

    你的代码应该是

    lastTable = len(driver.find_elements_by_xpath("//*[@id='emailwrapper']/div/div/table"))-1
    print lastTable
    

    【讨论】:

      【解决方案2】:

      假设至少有一个元素与 '//*[@id="emailwrapper"]/div/div/table' 的 xpath 匹配,您可以这样做:

      driver.find_elements_by_xpath('//*[@id="emailwrapper"]/div/div/table')
      

      它将返回一个列表,如果没有找到,则引发 NoSuchElementException。

      结果完全相同,但写法不同:

      from selenium.webdriver.common.by import By
      driver.find_elements(By.XPATH, '//*[@id="emailwrapper"]/div/div/table')
      

      之后,您可以在列表中执行 len() 以获取多少元素

      【讨论】:

        猜你喜欢
        • 2021-03-27
        • 2013-10-09
        • 1970-01-01
        • 1970-01-01
        • 2022-10-13
        • 2023-01-13
        • 2020-10-22
        • 1970-01-01
        • 2016-04-12
        相关资源
        最近更新 更多