2016-11-15 1 views
0

Я пытаюсь получить значение из выпадающего списка. У меня есть класс, который загружает видео, которое я хочу опубликовать. Мне нужно изменить статус, чтобы сделать это. Я видел другого человека, задающего подобный вопрос, но ни одно из предложений, похоже, не работает. Я предоставляю html, вызываю метод в классе и методе. Любая помощь приветствуется.Я пытаюсь обработать элемент select с помощью Webdriver

Вот что выберите смахивает на веб-странице:

<select id="group_media_953_status" class="status" name="group_media_attributes[953][status]" style="display: none;"> 
    <option value="published" selected="selected">Published</option> 
    <option value="scheduled">Scheduled</option> 
    <option value="unpublished">Not Published</option> 
</select> 

Вот мой вызов метода:

dropdown("group_media_953_status", "Published"); 

Вот метод:

public void dropdown(String name, String sel) { 
     try { 
      WebElement select = driver.findElement(By.id(name)); 
      List<WebElement> options = select.findElements(By.tagName("option")); 
      for (WebElement option : options) { 
       System.out.println(option.getText()); 
     //  if(sel.equals(option.getText())) 
     //   option.click(); 
      } 
     } catch (NoSuchElementException ex) { 
      System.err.println("Element in dropdown menu was not found"); 
      driver.quit(); 
      System.exit(0); 
     } 
    } 

Вот полный html. Я не закодировать HTML, так что я не смогу изменить его:

 <td class="group-status"> 
     <div class="field status"> 
     <select id="group_media_9870_status" class="status"  name="group_media_attributes[9870][status]" style="display: none;"> 
    <option value="published" selected="selected">Published</option> 
    <option value="scheduled">Scheduled</option> 
    <option value="unpublished">Not Published</option> 
    </select> 

<div id="group_media_9870_status_chosen" class="chosen-container chosen-container-single chosen-container-single-nosearch" style="width: 0px;" title=""> 
<a class="chosen-single published"> 
<span>Published</span> 
<div> 
<b></b> 
</div> 
</a> 
<div class="chosen-drop"> 
<div class="chosen-search"> 
<ul class="chosen-results"> 
</div> 

Я также попробовал и XPath не нашел выбора элемента либо./html/body/div [1]/section/div/div/form [2]/table/tbody/tr [1]/td [3]/div [1]/select и что до сих пор не найдено «select ".

+0

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

+0

http://stackoverflow.com/questions/12940592/how-to-select-an-item-from-a-dropdown-list-using-selenium-webdriver-with-java/14477819#14477819 – Janet

ответ

0

Вы пытались использовать класс «Выбрать»?

import org.openqa.selenium.support.ui.Select; 

public void dropdown(String name, String sel) { 
     try { 
       Select select = driver.findElement(By.id(name)); 
       select.selectByValue(sel); 
     } catch (NoSuchElementException ex) { 
      System.err.println("Element in dropdown menu was not found"); 
      driver.quit(); 
      System.exit(0); 
     } 
    } 
+0

Да. Это был один из вариантов на посту, который я нашел. Что происходит, так это то, что он не находит элемент «select» на странице. Я попытался использовать имя класса, xpath, id и имя, и ни один из них не работает. Я провел весь день на этом, и это действительно не должно быть так сложно. Существуют и другие аналогичные элементы, в которых использовалось выпадающее действие, а не выбор, но разработчик выбрал по какой-то причине выбор. :( – Janet

+0

Посмотрите на первый фрагмент html, который вы опубликовали, и на второй. У вашего объекта выбора есть динамическое число в нем group_media_'953'_status. Попробуйте написать xpath как .//div[@class='field status ']/select и используя это вместо идентификатора для выбора –