Проверка наличия у элемента определенного свойства
Есть таблица со списком элементов.<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- ФИО: Олег
- Город: Мск
- ФИО: Воробьева Татьяна
Слишком много лишнего, на мой взгляд.
Про драйвер - сами решите, как Вам удобнее его передавать/инициализировать, для сути вопроса не принципиально.
Ну и локатор вплоть до "//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, вместо того, чтобы настраивать и ждать таймауты, прописывать обработку исключений и т.п.?