2015-08-26 1 views
2

У меня возникла проблема, которую я не решаю.Selenium - счетчик элементов html

<ul id="dropdownSelectRole" class="dropdown-menu" role="menu"> 
    <li><a href="#"></a></li> 
    <li><a href="#">Admin</a></li> 
    <li><a href="#">aaaa</a></li> 
    <li><a href="#">abcd</a></li> 
    <li><a href="#">admin</a></li> 
</ul> 

Мне нужно подсчитать количество <li> элементов для того, чтобы поместить его в целое и использовать в цикле в то время как позже. Любой совет (или готовый код), как я могу это сделать в java?

Кто-нибудь, пожалуйста, совет, как взять текстовое значение каждого элемента в какой-либо список или таблицу?

Мне нужно выбрать все элементы из списка (выпадающего списка), чтобы проверить, что кнопка «Добавить» будет неактивной, после чего удалите все элементы и проверьте, что «Добавить» активен. И в конце концов нажмите кнопку «Добавить» и выберите только те элементы, которые были ранее в основном списке (вид резервной копии исходных данных, которые были отображены перед выполнением теста).

+0

Хороший вопрос, мне это тоже интересно. –

ответ

3
WebElement element=driver.findElement(By.id("dropdownSelectRole")); 
List<WebElement> list=element.findElements(By.tagName("li")); 
int count = list.size(); 

«список» содержит все элементы <li> и «подсчет» содержит число.

1

Если вам действительно нужно только количество Li-элементов, вы можете попробовать этот один-лайнер с помощью XPath:

int count = findElements(By.xpath("//ul[@id = 'dropdownSelectRole']/li")).size(); 
2

Нет необходимости хранить количество LI с в int, только через цикл сами элементы и воздействовать на них внутри цикла, например печатать текст и т.д.

List<WebElement> lis = driver.findElements(By.cssSelector("#dropdownSelectRole > li")); 
for (WebElement li : lis) 
{ 
    System.out.println(li.getText().trim()); 
} 

CSS-селектор, #dropdownSelectRole > li означает найти элемент с идентификатором (#) dropdownSelectRole, что имеет ребенка (>) LI.

Если вам действительно нужно хранить число LI с, int count = lis.size()

Для других вещей вам нужно сделать для каждого элемента, добавьте этот код внутри цикла и каждая задача будет выполняться на каждом из них LI элементы.