2015-02-10 3 views
0

Мне нужно выбрать последний элемент в списке DYNAMIC. Ниже приведен мой сценарий. Благодаря!Как ВСЕГДА выбрать последний элемент в списке

WebElement selectElement = driver.findElement(By.name("siteKey")); 
Select select = new Select(selectElement); 
//select.selectByVisibleText("last item"); 
//select.selectByIndex(0); 
//select.selectByValue("value"); 

См. Страницу HTML ниже. Дайте мне знать, если я могу предоставить вам любую другую информацию. Благодаря!

<div id="overview_form"> 
<ol> 

<li> 
<span>1.</span> 
<label class="input_label" for="sites">Sites*</label> 
<div class="select2-container select2-container-active select2-dropdown- open" id="s2id_autogen1" style="width: 500px;"> 
<a tabindex="-1" class="select2-choice" onclick="return false;"  href="javascript:void(0)"> 
<span>www.roger.com_20150210075155</span> 
<abbr style="display:none;" class="select2-search-choice-close"></abbr> 
<div><b></b></div></a> 
<input type="text" class="select2-focusser select2-offscreen" disabled="disabled"> 
</div> 
<select style=" size="1" name="siteKey" class="select2-offscreen" tabindex="-1"> 

<option value="30518">www.roger.com_20150209191817</option> 
<option value="30520">www.roger.com_20150209192123</option> 
<option value="30522">www.roger.com_20150209192351</option> 
<option value="30524">www.roger.com_20150209192910</option> 
<option value="30528">www.roger.com_20150209193425</option> 
<option value="30529">www.roger.com_20150209193801</option> 
<option value="30531">www.roger.com_20150209194009</option> 
<option value="30546">www.roger.com_20150210074133</option> 
<option value="30548">www.roger.com_20150210074359</option> 
<option value="30550">www.roger.com_20150210075155</option></select> 

</li> 
</ol> 
</div> 
+0

Как выглядит исходный HTML-код? – BoltClock

+0

В чем именно ошибка, с которой вы имеете дело? – aberna

ответ

3

Как о чем-то вроде:

WebElement selectElement = driver.findElement(By.name("siteKey")); 
Select select = new Select(selectElement); 
select.selectByIndex(select.getOptions().size()-1); 
+0

Когда я запускаю его, я получаю элемент не видим – familyGuy

+0

@familyGuy Это другая проблема. См. Это: https://stackoverflow.com/help/mcve – SiKing

+0

Различные проблемы ?, но решение, предоставленное Анной ниже, показывает элемент, который мы пытаемся извлечь. – familyGuy

1

Вы можете использовать getOptions(), он возвращает список, то получите размер списка

Select select = new Select(driver.findElement(By.id("siteKey"))); 
List<WebElement> l = select.getOptions(); 
int numElements = l.size(); 
select.selectByIndex(munElements); 

Надеется, что это помогает

+0

Ваш подход кажется довольно убедительным. Когда я запускаю его, он говорит: «Невозможно найти опцию с помощью индекса: 124. Однако я вижу последний параметр в списке как 124 – familyGuy

+0

' .size() 'подсчитывает из одного.' .selectByIndex() 'начинается с нуля. – SiKing

+0

Итак, если я использую этот код, я получаю, что «Элемент в настоящее время не виден, поэтому с ним нельзя взаимодействовать: Выберите select = new Select (driver.findElement (By.name (« siteKey »))); \t Список l = select.getOptions(); \t int numElements = l.size() - 1; \t select.selectByIndex (numElements); НО, если я удалю -1, тогда я получаю «Не могу найти опцию с индексом: 124 – familyGuy

0

Я пробовал в порядке, и он работает. Может быть, это поможет вам.

WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.echoecho.com/htmlforms11.htm"); 
    Thread.sleep(100l); 
    driver.findElement(By.xpath("//select[@name='dropdownmenu']")).click(); 
    Thread.sleep(100l); 
    WebElement element = driver.findElement(By.xpath("//select[@name='dropdownmenu']")); 
    List<WebElement> elements = element.findElements(By.tagName("option")); 
    System.out.println(elements.get(elements.size() - 1).getText()); 
Смежные вопросы