2012-04-03 3 views
1

여러 테이블 안에 요소가있는 다음 셀렌 CSS 코드를 약어로 표시하는 데 문제가 있습니다. 아래 코드는 두 개의 체크 박스를 제공합니다.테이블 요소의 긴 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 

동일한 코드와 확인란이있는 테이블이 있으므로이 코드를 사용할 수 없습니다. 유일한 차이점은 다른 행에 있다는 것입니다. 그래서 만약 내가 다른 체크 박스를위한 코드를 넣으면, 다음과 같이 보일 것이다.

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 

그래서 유일한 차이점은 모든 테이블에 대해 nth-of-type (i)입니다. 그래서 내가 어떻게 코드를 단축 할 수 있습니까?

표 [id $ = gridReports]> tbody> tr : nth-of-type (i) 다음에 span [id $ = reportCheckBox] 입력을 짧게 할 수있는 옵션이 있습니까?

도움을 주시면 감사하겠습니다.

감사

답변

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

또는 체인입니다에 webelement 요청을 당신이 할 수있는 모든 바인딩에 파이썬하지만 같은 생각에 있어요

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

이전 웹 드라이버 요소

관련 문제