Проверка наличия у элемента определенного свойства

Проверка наличия у элемента определенного свойства

​Есть таблица со списком элементов.<td /><td /><td /><td /><td /><td today" title="Суб Июл 7th 2012">7</td><td title="Вос Июл 8th 2012">8</td>Элементы могут иметь свойства today" или />Подскажите, пожалуйста, как можно проверить, что элемент 7 имеет свойство today".

Доброго времени суток. Вот такую штуку попробовал набросать. Код на языке java.

#3 Breetonia
  • ФИО: Рымаров Владислав

Подскажите, пожалуйста, как можно проверить, что элемент 7 имеет свойство today".

#4 Breetonia
  • ФИО: Рымаров Владислав

Надеюсь,это не рабочий пример,иначе этих твоих isTrue в проекте будет миллион )И зачем драйвер-то стартовать,когда можно ссылку на него передать ?Не будешь же ты в каждой функции вызывать фаирфокс,а если и будешь,то придется закрывать каждый раз,а это лишнее время и ресы.

#5 velazkes
  • ФИО: Малявко Виктор
  • Город: Минск

Надеюсь,это не рабочий пример,иначе этих твоих isTrue в проекте будет миллион )И зачем драйвер-то стартовать,когда можно ссылку на него передать ?Не будешь же ты в каждой функции вызывать фаирфокс,а если и будешь,то придется закрывать каждый раз,а это лишнее время и ресы.

#6 kenek
  • ФИО: Кравцов Евгений
  • Город: Воронеж

​Есть таблица со списком элементов. <td >2</td> <td >3</td> <td >4</td> <td >5</td> <td >6</td> <td title="Суб Июл 7th 2012">7</td> <td title="Вос Июл 8th 2012">8</td> Элементы могут иметь свойства , или . Подскажите, пожалуйста, как можно проверить, что элемент 7 имеет свойство .

Доброго времени суток. Вот такую штуку попробовал набросать. Код на языке java.

Спасибо. Рабочий вариант

#7 TatyanaV
  • ФИО: Воробьева Татьяна

Слишком много лишнего, на мой взгляд.

Про драйвер - сами решите, как Вам удобнее его передавать/инициализировать, для сути вопроса не принципиально.

Ну и локатор вплоть до "//td[7]" (включительно) лучше сделать более конкретным в рамках страницы.

#8 Lzk
  • ФИО: Олег
  • Город: Мск

Слишком много лишнего, на мой взгляд.

Про драйвер - сами решите, как Вам удобнее его передавать/инициализировать, для сути вопроса не принципиально.

Ну и локатор вплоть до "//td[7]" (включительно) лучше сделать более конкретным в рамках страницы.

Можно обойтись по идее всего лишь

#9 Lzk
  • ФИО: Олег
  • Город: Мск
#10 TatyanaV
  • ФИО: Воробьева Татьяна

Слишком много лишнего, на мой взгляд.

Про драйвер - сами решите, как Вам удобнее его передавать/инициализировать, для сути вопроса не принципиально.

Ну и локатор вплоть до "//td[7]" (включительно) лучше сделать более конкретным в рамках страницы.

Можно обойтись по идее всего лишь

У автора изначально требовалось вернуть boolean, findElements возвращает массив элементов, которые он нашел по заданному локатору. Поэтому, чтобы вернуть требуемый boolean - возвращается size() > 0 (т.е. нашлись ли какие-нибудь элементы с этим локатором или нет).

А findElement (если элемента на форме нет) будет сначала долго и безуспешно ждать его появления (в соответствии с заданным таймаутом), а потом может ещё и упасть с эксепшеном (в зависимости от того, что дальше будет с этим элементом делаться).

findElements же - поищет по локатору, нашлось что-то - супер, добавит в массив, не нашлось - ну и ладно. Массив в любом случае будет, даже если он будет пустой, size() никаких ошибок не выдаст и гарантированно отработает. Да и быстрее это будет.

#11 Lzk
  • ФИО: Олег
  • Город: Мск

У автора изначально требовалось вернуть boolean, findElements возвращает массив элементов, которые он нашел по заданному локатору. Поэтому, чтобы вернуть требуемый boolean - возвращается size() > 0 (т.е. нашлись ли какие-нибудь элементы с этим локатором или нет).

А findElement (если элемента на форме нет) будет сначала долго и безуспешно ждать его появления (в соответствии с заданным таймаутом), а потом может ещё и упасть с эксепшеном (в зависимости от того, что дальше будет с этим элементом делаться).

findElements же - поищет по локатору, нашлось что-то - супер, добавит в массив, не нашлось - ну и ладно. Массив в любом случае будет, даже если он будет пустой, size() никаких ошибок не выдаст и гарантированно отработает. Да и быстрее это будет.

хм, не вижу где автору требуется вернуть булево значение

да и тест свалится, если не найдет элемент , а не поскочит дальше, хотя по факту уже он отклоняется от сценария, например.

Время таймаута можно задать самому насколько я помню.

#12 TatyanaV
  • ФИО: Воробьева Татьяна

У автора изначально требовалось вернуть boolean, findElements возвращает массив элементов, которые он нашел по заданному локатору. Поэтому, чтобы вернуть требуемый boolean - возвращается size() > 0 (т.е. нашлись ли какие-нибудь элементы с этим локатором или нет).

А findElement (если элемента на форме нет) будет сначала долго и безуспешно ждать его появления (в соответствии с заданным таймаутом), а потом может ещё и упасть с эксепшеном (в зависимости от того, что дальше будет с этим элементом делаться).

findElements же - поищет по локатору, нашлось что-то - супер, добавит в массив, не нашлось - ну и ладно. Массив в любом случае будет, даже если он будет пустой, size() никаких ошибок не выдаст и гарантированно отработает. Да и быстрее это будет.

хм, не вижу где автору требуется вернуть булево значение

да и тест свалится, если не найдет элемент , а не поскочит дальше, хотя по факту уже он отклоняется от сценария, например.

Время таймаута можно задать самому насколько я помню.

Изначально поставленная задача " проверить, что элемент 7 имеет свойство ".

Как эту задачу решает полученный в результате "проверки" через findElement объект типа WebElement, и уж тем более - как её решает полученное при отсутствии элемента исключение? Вариант "есть элемент, значит свойство есть, эксепшн - значит свойства нет" - означает, что предложенный вариант с findElement не окончательный, т.к. требует дальнейшей обработки.

Свалится тест или нет - не факт. В конце концов, у него может быть логика какая-то в зависимости от того, есть нужное свойство у элемента или нет. Или он может просто по softAssert'у проверить и дальше по тесту пойти, чему может помешать экспешн.

Да, время таймаута можно задать. Но если элемента такого нет - это гарантированная пауза в тесте, заканчивающаяся эксепшеном. Зачем она нужна?

Не проще ли сделать гарантированно работающий малюсенький метод с boolean, вместо того, чтобы настраивать и ждать таймауты, прописывать обработку исключений и т.п.?

📎📎📎📎📎📎📎📎📎📎