2012-04-03 19 views
1

Ich habe Probleme, den folgenden selen CSS-Code zu verkürzen, der das Element innerhalb mehrerer Tabellen enthält. Der folgende Code enthält zwei Kontrollkästchen.Wie verkürzt man den langen Selenium CSS-Code für Tabellenelemente?

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 

Ich kann diesen Code nicht verwenden, da es auch eine andere Tabelle mit demselben Bereich und derselben Checkbox gibt. Der einzige Unterschied ist, dass es in einer anderen Reihe ist. Also, wenn ich den Code für ein anderes Kontrollkästchen, würde es so aussehen.

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 

Also der einzige Unterschied ist nth-of-type (i) für jede Tabelle. Wie kann ich den css Code verkürzen?

Gibt es eine Option, die ich wie Tabelle verkürzen kann [id $ = gridReports]> tbody> tr: nth-of-type (i) gefolgt von span [id $ = reportCheckBox] -Eingabe.

Jede Hilfe wäre willkommen.

Dank

Antwort

1

Sie es durch Verengen Ihr Universum

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") 

ODER

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

Das ist in Python aber die gleiche Idee in allen Bindungen, wie Sie können Kette eine webelement Anfrage ein verkürzen konnte vorheriges Webdriver-Element