如何从具有始终变化的子元素编号的 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)
我正在尝试收集我工作的每个付薪期的总小时数。我可以从“总计”部分收集总小时数,但似乎该部分从来没有静态子元素编号,并且与另一行共享 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)