2015-01-15 2 views
1

Ниже приводится код:Селен - не в состоянии выбрать вариант из выпадающего

public static void test1() { 
System.out.print("\nTo find UserName element"); 
Select select = new Select(driver.findElement(By.id("drop_down"))); 
System.out.print("\nElements found"); 
select.selectByIndex(1); 
} 

Ни следующие технические работы:

select.selectByIndex(1); 
select.selectByValue("1"); 
select.selectByVisibleText("Super Admin"); 

Он бросает исключение: Исключение в потоке «основного» орг. openqa.selenium.NoSuchElementException: не удается найти параметр со значением: 1

<select id="drop_down" style="width:205px;" name="drop_down"> 
    <option value=""></option> 
    <option value="1"> 
     Super Admin 
    </option> 
    <option value="4"> 
     Question Reviewer 
    </option> 
    <option value="6"> 
    Evaluator 
    </option> 
</select> 
+0

Значения drop down заполняется на основе введенной электронной почты. – Abhinav

ответ

0

Возможно, выпадающее меню неправильно загружено при попытке получить к нему доступ.

Попробуйте ниже код ожидания до числа вариантов в раскрывающемся списке становится больше 1, а затем выберите первый вариант из него:

try{ 
    // Waits for 20 seconds 
    WebDriverWait wait = new WebDriverWait(driver, 20); 

    // Wait until expected condition size of the dropdown increases and becomes more than 1 
    wait.until((ExpectedCondition<Boolean>) new ExpectedCondition<Boolean>(){ 
     public Boolean apply(WebDriver driver) 
     { 
      Select select = new Select(driver.findElement(By.id("drop_down"))); 
      return select.getOptions().size()>1; 
     } 
    }); 

    //To select the first option 
    Select select = new Select(driver.findElement(By.id("drop_down"))); 
    select.selectByVisibleText("Super Admin"); 
}catch(Throwable e){ 
    System.out.println("Error found: "+e.getMessage()); 
} 
+0

Все еще получаю ту же ошибку, что и: Не удается найти элемент с текстом: Super Admin – Abhinav

+0

Мне нужно выбрать Super Admin. – Abhinav

+0

Хорошо. Не могли бы вы добавить фрагмент ** HTML-кода в раскрывающемся списке, прежде чем адрес электронной почты будет введен **, как вы сказали ** «Значение выпадающего списка заполняется на основе введенного по электронной почте» **? Затем я изменю свой код, – Subh

1

Привет как за первый комментарий бушель Суого на Янв 15 в 6:35 Я тоже изменил код, но получил ту же ошибку, что упоминал Абхинав 15 января в 6:53 после этого Субх сказал: «Я редактировал мой код выше .. Посмотрите, если это сработает для вас и позвольте мне знаете, тоже, пожалуйста .. », но после этого комментария я не видел никакого модифицированного кода, поэтому это не помогло .... Наконец, я обыскал несколько других форумов, и я попытался использовать selectByIndex() как: -

WebElement toactTyp=driver1.findElement(By.name((<Name of the Element to access>))); 
Select toactSel=new Select(toactTyp); 
toactSel.selectByIndex(2); 

Он работал хорошо с кодом выше ..... прошу, пожалуйста, поделитесь измененным кодом или по крайней мере строками, где изменения были сделаны, как это полезно для многих, как я

+0

Почти 2 года спустя. Извините за поздний ответ .. :) На самом деле я действительно модифицировал код. Раньше он просто ожидал появления выпадающего списка, а затем выбрав соответствующий параметр. После ответа OP было подтверждено, что приложение использует ajax для загрузки параметров в качестве введенного адреса электронной почты.Следовательно, я модифицировал код, чтобы дождаться опций count> 1, а затем 'selectByVisibleText', в котором я мог бы использовать' selectByindex' и дал «1», который тоже сработал бы. Для нормальных целей ваш код - это то, что ожидается, конечно, так как ваш - это тот случай, когда выпадающие параметры являются постоянными. – Subh

Смежные вопросы