如何从具有始终变化的子元素编号的 HTML table 中获取元素?

How do I get an element from an HTML table that has an always changing child element number?

我正在尝试收集我工作的每个付薪期的总小时数。我可以从“总计”部分收集总小时数,但似乎该部分从来没有静态子元素编号,并且与另一行共享 class 个名称。

这是一个例子:

从第一页开始,如果我在 Chrome 中复制选择器,我会得到:

#TableTimeCard > tbody > tr:nth-child(12) > td:nth-child(3)

但是,当我进入下一个支付期时,我得到:

#TableTimeCard > tbody > tr:nth-child(14) > td:nth-child(3)

那个“tr:nth-child”数字介于 4 和我考勤卡上的条目数之间。

这是该网站的代码片段。我正在尝试接受 10.37:

我尝试通过 class 名称获取它,但它只是获取图像中“总小时数”之后的第一个数字。在这种情况下,0.00。我相信原因是因为它具有相同的 class 名称:

我需要做的就是打印总计小时数到控制台。有什么想法吗?

我在做print(driver.find_element_by_css_selector("#TableTimeCard > tbody > tr:nth-child(12) > td:nth-child(3)")

谢谢!

好吧,你可以使用 find_elements 来存储所有这些,并且可以像这样迭代:-

hours = find_elements(By.CSS_SELECTOR, "#TableTimeCard > tbody > tr > td:nth-child(3)")
print(hours[0].text)

甚至您也可以迭代该列表:-

for hour in find_elements(By.CSS_SELECTOR, "#TableTimeCard > tbody > tr > td:nth-child(3)"):
    print(hour.text)

更新 1:

如果您只想获取 总小时数 值,请使用此 xpath :-

//td[text()='Grand Totals']/following-sibling::td[4]

在代码中:

print(driver.find_element_by_xpath("//td[text()='Grand Totals']/following-sibling::td[4]").text)