Перейти к содержимому

Фотография

Как посчитать количество веб элементов в селениуме?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 prostooleg1

prostooleg1

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • Город:Москва


Отправлено 26 февраля 2012 - 11:26

Суть проблемы. Откройте сайт mamba.ru, нажмите "знакомства", нажмите "найти". Мне нужно:

Проверить, что на странице выведено ровно 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 раз, точно также как и город Москва. Помогите плиз.
  • 0

#2 Skuayer

Skuayer

    Активный участник

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Жуков Анатолий Викторович
  • Город:Санкт-Петербург

Отправлено 26 февраля 2012 - 11:36

попробуйте driver.findElements(By.cssSelector("div.SAInfo div i.sex")).size()
  • 0

#3 tatajaja

tatajaja

    Новый участник

  • Members
  • Pip
  • 1 сообщений

Отправлено 26 февраля 2012 - 17:55

Вам нужно создать 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) - вернет і-тый элемент списка всех элементов
}
  • 0

#4 prostooleg1

prostooleg1

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • Город:Москва


Отправлено 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, иначе тест провален.
  • 0

#5 soleksenko2702

soleksenko2702

    Постоянный участник

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 27 февраля 2012 - 07:38

Мне когда то нужно было посчитать количество строк в таблице. Я сделал это так:
int recordsCount = driver.FindElement(By.Id("id_tb")).FindElements(By.TagName("tr")).Count;
  • 0

#6 prostooleg1

prostooleg1

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • Город:Москва


Отправлено 27 февраля 2012 - 19:09

Мне когда то нужно было посчитать количество строк в таблице. Я сделал это так:
int recordsCount = driver.FindElement(By.Id("id_tb")).FindElements(By.TagName("tr")).Count;



Спасибо, тоже попробую :-)
  • 0

#7 prostooleg1

prostooleg1

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • Город:Москва


Отправлено 02 марта 2012 - 16:00

Сделал проще, без всякого цикла

List<WebElement> list = wd.findElements(By.cssSelector("div.SAInfo div i.sex"));
assertThat(12, equalTo(list.size()));

и все :-)
  • 0

#8 soleksenko2702

soleksenko2702

    Постоянный участник

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 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;
  • 0

#9 prostooleg1

prostooleg1

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • Город:Москва


Отправлено 04 марта 2012 - 08:33

[/quote]

Если Вам нужно только количество элементов, почему не сделать так:

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-а создать, который количество бы элементов считал?
  • 0

#10 soleksenko2702

soleksenko2702

    Постоянный участник

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 04 марта 2012 - 10:34

Нет, Count это стандартное свойство которое возвращает количество элементов.
http://msdn.microsof...y/ms132507.aspx
  • 0

#11 prostooleg1

prostooleg1

    Активный участник

  • Members
  • PipPip
  • 94 сообщений
  • Город:Москва


Отправлено 04 марта 2012 - 11:14

Нет, Count это стандартное свойство которое возвращает количество элементов.
http://msdn.microsof...y/ms132507.aspx



Я на Java пишу, у меня на этот Count ругается.
  • 0

#12 kos32

kos32

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Судиловский Константин Николаевич

Отправлено 06 марта 2012 - 14:01

del

Сообщение отредактировал kos32: 06 марта 2012 - 14:03

  • 0

#13 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 06 марта 2012 - 15:37

prostooleg1, у вас вместо Count идёт size(), т.к. он возвращает количество элементов в масиве
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных