2014-04-09 3 views
1

나는 문제가있다. 나는 데이터베이스에서 아이템으로 채워진 콤보 박스에서 항목을 얻을 필요가있다. 그래서 그들에게는 ID가 없다. 어쩌면 누군가가이 문제를 겪고 나를 도울 수있다. :)셀레늄 webdriver ID없이 콤보 상자에서 항목을 선택

안녕하세요, m이 코드를 시도 (미안은 정말 끔찍 해요 : /)

boolean text1 = Boolean.valueOf("//*[contains(text(), 'textA')]"); 
boolean text2 = Boolean.valueOf("//*[contains(text(), 'textA')]"); 
int i = 0; 
do { 
    if (text1 != true){ 
     waitForElement(By.xpath("//div[@onclick='meXpatht()']")).click(); //going to next 
                     //combobox page 
    } else if (text2 == true){ 
     waitForElement(By.xpath("//*[contains(text(), 'textA')]")).click(); //selecting 
                      //combo item 
     } else { 
     //not done yet, here will be creation of new reccord 
     } 
    i++; 
} 
while (i <= 1000); 

내가 찾을 수없는 경우, 내가, 내가 텍스트로, 필요한 요소를 찾기 위해 노력하고있어 그래서 내 코드가있다 하나, 다음 콤보 상자 페이지로 이동합니다.

로드 할 때 지금 무한 루프가있는 코드에 문제가 있습니다. 그리고 내가 필요한 텍스트를 찾을 때 루프를 멈추는 방법을 알아낼 수 없습니다.

이 코드를 수정하는 방법에 대한 아이디어가 있으십니까? 아니면 여기서 뭔가 잘못하고있는거야?

요소를 찾았을 때 break;으로 루프를 멈출 수 있다고 생각했지만 작동하지 않았습니다. 이제는 제가 생각하기에, 아마도 combobox에서 텍스트를 찾고 있기 때문일 수 있습니다.

+2

html 구조를 표시 할 수 있습니까? 무엇을 셀레늄으로 시도 했습니까? – Thomas

+0

감사합니다. varun257을 편집하십시오. –

답변

2

WebElement 개체를 선택하는 방법은 여러 가지가 있습니다.

당신은 다양한 방법 HERE를 확인하실 수 있습니다하지만 난 당신이 당신이 아마 예를 들어 ID가 가장 가까운 요소에서 DOM을 통해 통과하는 상황에서 사용할 수있는 CSS 선택기에서 구체적으로 보면 좋습니다. 워드 프로세서에서 CSS 선택기의

예 내가 링크 : 당신이 CSS보다는 XPath를 더 편안 경우

WebElement cheese = driver.findElement(By.cssSelector("#food span.dairy.aged")); 

당신은 또한 XPath를 선택기를 사용할 수 있습니다.

예 :

WebElement select = driver.findElement(By.tagName("select")); 
List<WebElement> allOptions = select.findElements(By.tagName("option")); 
for (WebElement option : allOptions) { 
    if("yourDesiredValue".equals(option.getAttribute("value"))){ 
     option.click(); 
    } 
} 

"yourDesiredValue"가 나타내는 String이다 : 당신이 당신이의 라인을 따라 뭔가를 사용할 수있는 select 요소를 다루고있는 것으로 보인다 때문에

List<WebElement> inputs = driver.findElements(By.xpath("//input")); 

선택하려는 option 태그의 value 속성

+0

장기간 도움을 주셔서 감사합니다. –

관련 문제