Как посчитать количество веб элементов в селениуме?
#1
Отправлено 26 февраля 2012 - 11:26
Проверить, что на странице выведено ровно 12 анкет женского пола (проверяется по наличию женской иконки) - если мы мужчина ищем женщину - иконка женской анкеты findElement(By.cssSelector("div.SAInfo div i.sex"))
Проверить, что все анкеты выводятся с фотографиями
Проверить, что возраст женщин попадает в диапазон 20-30 лет - если выставить диапазон поиск аот 20-30 лет.
Проверить, что у всех женщин местоположение «Москва» - если выставить где ищем.
Так вот каким образом в селениуме мне посчитать что элементов findElement(By.cssSelector("div.SAInfo div i.sex")) ровно 12? И как я понимаю если это сделаю, то я могу посчитать что от 20-30 лет по тексту встречается ровно 12 раз, точно также как и город Москва. Помогите плиз.
#2
Отправлено 26 февраля 2012 - 11:36
#3
Отправлено 26 февраля 2012 - 17:55
Потом вы просто манипулируете элементами списка, в цикле для каждого елемента ставите свои проверки, цикл естественно будет идти от 0 до размера списка найденных элементов.
ArrayList <WebElement> list = new ArrayList <WebElements>();
list = findElement(By.cssSelector("div.SAInfo div i.sex"));
for (int i=0;i<list.size();i++){
// проверки для каждого элемента отдельно: list.get(i) - вернет і-тый элемент списка всех элементов
}
#4
Отправлено 26 февраля 2012 - 20:45
Вам нужно создать ArrayList с элементами типа WebElement - засадить туда функцию драйвера findelements, так как она возвращает ArrayList.
Потом вы просто манипулируете элементами списка, в цикле для каждого елемента ставите свои проверки, цикл естественно будет идти от 0 до размера списка найденных элементов.
ArrayList <WebElement> list = new ArrayList <WebElements>();
list = findElement(By.cssSelector("div.SAInfo div i.sex"));
for (int i=0;i<list.size();i++){
// проверки для каждого элемента отдельно: list.get(i) - вернет і-тый элемент списка всех элементов
}
Спасибо вам, завтра на работе попоробую. И как я понял в цикле по By.cssSelector("div.SAInfo div i.sex")); list.get(i) должен вернуть мне 12, так так таких иконок на странице должно быть всего 12. Соответственно в цикле для данного эдемента я делаю проверку, что list.get(i) должен равняться 12, иначе тест провален.
#5
Отправлено 27 февраля 2012 - 07:38
int recordsCount = driver.FindElement(By.Id("id_tb")).FindElements(By.TagName("tr")).Count;
#8
Отправлено 03 марта 2012 - 08:22
Сделал проще, без всякого цикла
List<WebElement> list = wd.findElements(By.cssSelector("div.SAInfo div i.sex"));
assertThat(12, equalTo(list.size()));
и все :-)
Если Вам нужно только количество элементов, почему не сделать так:
int i = wd.findElements(By.cssSelector("div.SAInfo div i.sex")).Count;
#9
Отправлено 04 марта 2012 - 08:33
Если Вам нужно только количество элементов, почему не сделать так:
int i = wd.findElements(By.cssSelector("div.SAInfo div i.sex")).Count;
[/quote]
Мне еще нужно сравнить что это количество элементов равно 12. При int i = wd.findElements(By.cssSelector("div.SAInfo div i.sex")).Count; у меня ругается на Count, это надо что то импортиировать? Или предварительно объект какой Count-а создать, который количество бы элементов считал?
#10
Отправлено 04 марта 2012 - 10:34
http://msdn.microsof...y/ms132507.aspx
#11
Отправлено 04 марта 2012 - 11:14
Нет, Count это стандартное свойство которое возвращает количество элементов.
http://msdn.microsof...y/ms132507.aspx
Я на Java пишу, у меня на этот Count ругается.
#12
Отправлено 06 марта 2012 - 14:01
Сообщение отредактировал kos32: 06 марта 2012 - 14:03
#13
Отправлено 06 марта 2012 - 15:37
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных