2014-10-22 4 views
0

여기 내 문제가 있습니다. 페이지에 2 개의 드롭 다운이 있습니다. 첫 번째는 보이고 다른 것은 처음에 숨겨져 있습니다. dropdown1에서 특정 값을 선택하면 dropdown2가 표시됩니다.이 경우 드롭 다운 2에서도 값을 선택해야합니다. 어떤 이유로 dropdown1에서 값을 가져 와서 dropdown2가 트리거되지 않아 "요소가 현재 표시되지 않아 상호 작용하지 않을 수 있습니다."라는 오류로 내 테스트가 실패하는 경우가 있습니다. 드롭 다운 1에서 값을 가져 와서 dropdown2를 표시 할 때만 작동합니다. 내 스크립트에 무슨 문제가 있는지 잘 모르겠다. 나도 .isEmpty를 시도했지만 같은 문제가 있었다. 모든selenium webdriver의 "if else"문과 관련된 문제

//select value from dropdown1 
    new Select(driver.findElement(CONTACT)).selectByVisibleText(strContact); 

    //if dropdown2 becomes visible then select value from dropdown2 
    if(!driver.findElement(PREF_TIME).isDisplayed()){ 

     new Select(driver.findElement(PREF_TIME)).selectByVisibleText("Evening"); 

    //if dropdown2 is not visible then move to next object and continue with test 
    }else{ 

      new Select(driver.findElement(HEAR)).selectByVisibleText(strHear); 

    } 
+0

두 개의 드롭 다운의 HTML 마크 업은 무엇입니까? – Arran

+0

dropdown1 : Russ

+0

dropdown2 : Russ

답변

0

먼저, 두 번째가 화면에 표시 선택할 때까지 약간의 시간을 기다릴 필요 - (이 오류가 발생하는 셀레늄이 두 번째 select 태그가 표시되지 않는 이유입니다 - 이러한 모든 옵션은 빠르게 일어날 또 다른 한가지는 select 요소에서 옵션을 선택하는 것입니다

Thread.sleep(800); 

:)

당신은 자바의 스레드 클래스를 사용할 수 있습니다. 목록에서 옵션을 선택하는 것이 좋습니다.

WebElement select = driver.findElement(By.xpath(yourXpathGoesHere)); 
Select dropDown = new Select(select); 
List<WebElement> options = dropDown.getOptions(); 
options.get(1).click(); 

xpath로 요소를 쉽게 선택할 수 있습니다. xpath는 브라우저에 내장 된 웹 개발 도구를 통해 찾을 수 있습니다. 하지만 가장 좋은 방법은 id 속성을 사용하여 요소를 찾는 것입니다.이 방법을 사용하면 지정된 ID가있는 페이지에 요소가 하나만있을 수 있으므로 올바른 요소를 얻을 수 있습니다.

+0

답변 해 주셔서 감사합니다. 그러나 두 번째 선택이 페이지에 나타나면 기다리지 않고 잘 찾습니다. 보시다시피, 그것은 If 문에 포함되어 있습니다. 내가 겪고있는 문제는 If 문이 실행 된 후에 다른 문으로 넘어 가지 않는다는 것입니다. 따라서 두 번째 선택 항목이 표시되지 않는 경우 제 스크립트가 첫 번째 선택 항목에 걸리게됩니다. – Russ

관련 문제