如何缩短表元素的长Selenium CSS代码?

时间:2012-04-03 23:11:19

标签: css css3 css-selectors selenium-rc selenium-chromedriver

我无法缩写以下selenium CSS代码,其中包含多个表中的元素。下面的代码给了我两个复选框。

table[id$=gridReports]>tbody>tr:nth-of-type(2)>td:nth-of-type(2)>table[id$=panelReportInformation]>tbody>tr:nth-of-type(2)>td>table[id$=panelReportContent]>tbody>tr:nth-of-type(2)>span[id$=reportCheckBox] input

我无法使用此代码,因为还有另一个具有相同span和checkbox的表。唯一的区别是它在不同的行。因此,如果我将代码放入另一个复选框,它将看起来像这样。

table[id$=gridReports]>tbody>tr:nth-of-type(3)>td:nth-of-type(2)>table[id$=panelReportInformation]>tbody>tr:nth-of-type(2)>td>table[id$=panelReportContent]>tbody>tr:nth-of-type(2)>span[id$=reportCheckBox] input

所以唯一的区别是每个表的第n个类型(i)。那么如何缩短css代码?

有没有我可以缩短的选项,如表[id $ = gridReports]> tbody> tr:nth-​​of-type(i)后跟span [id $ = reportCheckBox]输入。

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

你可以通过缩小宇宙来缩短它

el = driver.find_element_by_css_selector("table[id$=gridReports]>tbody>tr:nth-of-type(3)")
el.find_element_by_css_selector("span[id$=reportCheckBox] input")

OR

els = driver.find_elements_by_css_selector("span[id$=reportCheckBox] input")
for el in els:
    el.click()

在python中有这个但在所有绑定中都有相同的想法,因为你可以将webelement请求链接到以前的webdriver元素