2012-08-06 2 views
-2

셀렌을 사용하여 복잡한 웹 서비스를 테스트해야합니다.공통 부모없는 ID로 셀렌 nth 일치

id 개의 요소가 세션마다 변경되는 문제가 있습니다.
예를 들어 개의 입력이 있으며id이고 접두어는 textf_id_DComboBox_이며 연속 번호로 끝나며 시작 번호는 임의로 지정됩니다 (세션에 따라 다름). (1- css=input[id^='textf_id_DComboBox_']하지만 난 방법 다음 항목을 찾을 생각이 없습니다 :.
입력은 \가

내가 선택기를 사용하여 첫 번째 입력을 찾을 수있는 공통의 부모가 그렇게 nth-child이 작동하지 않는이 없습니다 7). xpath 선택기를 사용해야하는 stackoverflow에 대한 몇 가지 제안을 발견했지만 사용 사례에 대한 예제를 채택 할 수 없었습니다.

업데이트 : css=td.DForm_treeGridNoWrap input :
는 또한 첫 번째 입력을 캡처 다른 선택이있다.

답변

1
당신은 공통의 ID가 포함 된 모든 입력을 선택하기 위해이 XPath를 사용할 수 있습니다

의 건강한 인스턴스로 간주됩니다

string comboBoxXPath = "//input[contains(@id, 'textf_id_DComboBox')]"; 
List<WebElement> comboBoxElements = driver.findElements(By.XPath(comboBoxXPath)); 

이 시점에서 전체 컬렉션을 반복하거나 인덱스를 사용하여 상호 작용할 컬렉션을 선택할 수 있습니다.

comboBoxElements[1] 
comboBoxElements[2] 
comboBoxElements[3] 

etc... 
+0

셀레늄 스크립트를 사용하고 있으므로 적절한 해결책을 찾았습니다. 'xpath = (// input [contains (@id,'textf_id_DComboBox _ ')]) [7]', thanks –

0

글쎄, 그 descrption 그 정도 도움이되지 않습니다. 이러한 트릭을 시도 할 수 있습니다 : 그 ID를 공통의 부모가 없기 때문에

  • 당신은이 트릭은 아마 작동하지 않습니다 WebElementfindElement를 호출 할 수 있습니다. 그들은 포장하는 경우에, 말, 테이블에 먼저 테이블을 찾을 수 있습니다 다음

    WebElement table = driver.findElement(By.id("the-table")); 
    

과 같은 테이블에있는 모든 입력 찾을 :

 List<WebElement> inputs = table.findElements(By.tagName("input")); 
  • 셀레늄 설치를 IDE를 파이어 폭스에 연결하고 그것을 사용하여 테스트 케이스를 시험해 보라. Selenium IDE에서 타겟을 가지고 플레이 할 수 있습니다.

  • 더러운 방법

    List<WebElement> allInputs = driver.findElements(By.tagName("input")); 
    

    같은 페이지에서 모든 입력을 찾을 수 있습니다.

각주 : 코드는 자바이며 driver 변수가 WebDriver