【问题标题】:How to get the count of elements within a table with two class names?如何获取具有两个类名的表中元素的数量?
【发布时间】:2019-07-01 12:03:43
【问题描述】:

我需要从表中获取 tds 和 trs 的 len,我使用的是 xpath,但每当我运行代码时,我得到的值与正确的值完全不同;

表格遵循以下方案:

<table class="kktable stats">
<tbody>
<tr>
<td></td>
...
</tr>

我目前的尝试:

tr_ = driver.find_elements_by_xpath('//table/tbody/tr')
tds_ = driver.find_elements_by_xpath('//table//tbody//tr[1]//td')

print(len(tr_), len(tds_))

¡这应该输出 34、13,但它输出 43、35,我需要一些非绝对的东西,因为页面每天都在变化!

表的类是kktable stats

我目前在下面使用这个方法/

table = '/html/body/div[4]/div[2]/div[6]/div[3]/div/div/div/div[3]/div/table/tbody'
trs = driver.find_elements_by_xpath(table+"/tr")
tds = driver.find_elements_by_xpath(table+"/tr[1]/td")

这是正确输出 => 34, 13

我也试过这个:

tds_ = driver.find_elements_by_xpath('//table[@class="kktable.stats"]//tbody//tr[1]//td')

但不幸的是它返回了 0

【问题讨论】:

  • 用相关的 HTML 更新问题
  • 你为什么使用“kktable.stats”?为什么点而不是空格?
  • 没有“.”是行不通的。这就是嵌套类与 ¡selenium 一起工作的方式!
  • @AndrejHatzi 您正在混淆使用. 指定类和XPath 的CSS 选择器。正如 Harshit 建议的那样,您的最后一个 XPath 应该是 ...[@class="kktable stats"]...

标签: python selenium-webdriver xpath css-selectors webdriver


【解决方案1】:

要获得&lt;tr&gt;s 的计数,您可以使用:

  • CssSelector

    trs = driver.find_elements_by_css_selector("table.kktable.stats > tbody tr")
    print(len(trs))
    
  • XPath

    trs = driver.find_elements_by_xpath("//table[@class='kktable stats']/tbody//tr")
    print(len(trs))
    

要从第一个 &lt;tr&gt; 获取 &lt;td&gt;s 的计数,您可以使用:

  • CssSelector

    trs = driver.find_elements_by_css_selector("table.kktable.stats > tbody > tr td")
    print(len(tds))
    
  • XPath

    tds = driver.find_elements_by_xpath("//table[@class='kktable stats']/tbody/tr//td")
    print(len(tds))
    

【讨论】:

    猜你喜欢
    • 2015-07-04
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    相关资源
    最近更新 更多