2014-10-09 5 views
0

각 파일에 하나의 확인란에 대한 사용자 업로드 이상의 파일은 웹 페이지에 추가 할 경우 내가 input type="checkbox" value="1053" name="filelist"셀레늄 동적 XPath는 처리

하나 개의 체크 박스가 있습니다. 그러나 값이 그 input type="checkbox" value="424" name="filelist"

을 위해 변경 된 값은 각각에 대해 변경하고 다른 사람이 동일한 경우, 어떻게 특정 확인란을 선택하는 방법 도와주세요.

답변

0

findelements 메소드를 사용하여 이름 또는 상대 xpath를 사용하여 모든 확인란을 읽습니다.

findelements는 목록을 반환합니다. 모든 확인란을 사용할 수 있습니다.

0

이상적으로 요소를 찾기 위해 고유 한 속성을 얻지 못하면 이상적으로 xpath를 사용할 수 있습니다. 그러나 다시 귀하의 질문에 당신이 상대 xpath를 만들 수있는 독특한 상수 속성 값을 지적하고있다. 그래서 내 제안은 다음과 같습니다

//file[@id='foo']/input[@type='checkbox'] 

또는 findElements을 사용하여 모든 체크 박스 요소를 찾아 목록에 대한 루프를 반복하여 당신이 원하는 무엇이든 할 : 다음과 같이 업로드 된 파일 정보에서 시작하는 상대 XPath를 사용하거나 웹 요소입니다. 그것은 무언가 같이 보일 것이다 : 당신은 By.cssSelector() 또는 By.name (와 같은 어떤 방법으로 모든 요소를 ​​찾을 수 있습니다

Lis<WebElement> allChkBoxes = driver.findElements(By.name('filelist')); 
// to click on first one 
allChkBoxes.get(1).click(); 
0

) 및 루프의 도움을 클릭

List<WebElement> allCheckBoxes=driver.findElements(By.cssSelector("input[type='checkbox']")); 
for(WebElement checkBox:allCheckBoxes){ 
     checkBox.click(); 
} 
0

이후 사용 가능한 고유의 속성은 귀하의 경우가 없다, 당신이 사용할 수있는 인덱스 :

String xPath = //input[@type='checkbox'][name='filelist'][i] 

I = 인덱스, 즉 1, 2, 3 등 그리고,

,536,
WebElement chkBox = driver.findElement(By.xpath(xPath)); 
chkBox.click();