我无法缩写以下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]输入。
任何帮助都将不胜感激。
由于
答案 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元素