Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static ExpectedCondition<WebElement> conditionToWaitParentElement(final By locator, final String text) {
- /*
- очень странное имя для кондишена
- для метода $(ExpectedCondition<WebElement> conditionToWaitElement)
- имя параметра - вполне ок
- т к мы вообще-то - можем разные кондишены использовать для вызова такого метода
- тут - для $(ExpectedCondition<WebElement> conditionToWaitElement)
- мы рассуждаем исходя из контекста этого метода
- а при реализации конишена - надо быть уже точным
- и оперировать теми терминами - которые уже для кондишена применимы
- забыли про то где будем кондишен вызывать
- и думаем - что он проверяет
- а проверяет он - есть ли в списке элемент с нужным нам текстом
- я писала - какая сигнатура должна быть у кондишена (пример)
- ExpectedCondition<WebElement> elementWithText(final By elementsLocator, final String exactText)
- */
- return elementExceptionsCatcher(new ExpectedCondition<WebElement>() {
- String actualText;
- public WebElement apply(WebDriver webDriver) {
- ...
- /*
- по реализации
- что мы хотим
- мы хотим проверить
- есть ли в списке элемент с нужным нам текстом
- потому - будем оперировать всеми текстами элементов
- у тебя уже есть кондишен textsOf
- в котором мы сначала - собираем список всех текстов элементов и потом их анализируем
- тут - тоже нужно собрать список текстов элементов
- а вот анализ будет немного не такой
- что нам нужно
- дано - список текстов
- надо узнать - есть ли в списке текстов нужный нам текст
- если есть - нужно вернуть вебэлемент который соответствует найденному тексту
- (если мы нашли в списке текстов нужный нам текст по индексу 5,
- то и вебэлемент из списка вебэлементов - нужно получить по индексу 5)
- а если мы обошли весь список текстов
- и нужного теста не нашли -
- то возвращаем нулл
- */
- }
- public String toString() {
- ...
- /*
- как обычно описываем
- что проверяли
- для чего проверяли
- что ожидали
- что было в реальности
- от этой схемы - не отходи
- и ни в коем случае не надо писать в toString кондишена
- что что-то там не нашлось
- toString любого объекта - описывает этот объект
- и ничего более
- кондишен точнее всего описывается по схеме - что я выше привела
- Element of list located ....
- Should have exact text ....
- While actial texts are ...
- да, и тут - будет полезно вывести все фактические тексты списка
- */
- *************************************************************
- public static ExpectedCondition<List<WebElement>> exactTextsOf(final By elementsLocator, final String... texts) {
- /*
- тут - все верно
- уже не в одном кондишене - нам нужно получать список текстов
- реализуй в неком классе Heplers
- универсальный статический метод
- List<String> getTexts(List<WebElement> elements)
- и используй єтот метод в кондишенах
- код станет лаконичнее
- */
- *******************************************
- public static ExpectedCondition<List<WebElement>> exactTextsOfVisible(final By elementsLocator, final String... texts)
- /*
- а тут - после получения списка вебэлементов
- сначала - перебери его с целью получить другой список - только видимых вебэлементов
- все очень похоже на получение списка текстов
- только теперь мы формируем список вебэлементов
- обходим в цикле наш список - for (WebElement element : elements)
- и если элимент видим (element.isDisplayed)
- то помещаем его в результирующий список
- поскольку список видимых вебэлементов - нужно будет получать еще в одном кондишене
- тоже вынеси это в отдельный метод в Heplers
- List<WebElement> getVisibleElements(List<WebElement> elements)
- и используй его в кондишенах
- тут - получишь такую последовательность действий
- сначала - получи список вебєлементов по локатору
- потом - по этому списку - список видимых вебэлементов
- затем - уже по списку видимых вебэлементов - получай список текстов (получишь тексты именно видимых вебэлементов)
- а дальше - все аналогично exactTextsOf
- только в toString уточнить - что проверяем тексты именно видимых элементов
- */
- ****************************************
- public static ExpectedCondition<Boolean> emptySizeOf(final By elementsLocator) {
- /*
- универсальнее - сделать вот так
- оставить кондишен
- public static ExpectedCondition<Boolean> sizeOf(final By elementsLocator, final int expectedSize)
- и реализовать
- public static ExpectedCondition<Boolean> emptyOf(final By elementsLocator) {
- return sizeOf(elementsLocator, 0);
- }
- или вообще не реализовывать emptyOf
- а проверять с помощью sizeOf - что размен равен нулю
- что мы получим при такой реализации
- у нас будет универсальный кондишен sizeOf
- который применим в бОльшем количестве случаем
- и второй кондишен - emptyOf - который мы не разрабатывали с нуля, а в нем переиспользовали sizeOf
- мне не нравится имя emptyOf
- потому я бы не стала реализовывать такой кондишен)
- тем более - в вызовах
- assertThat(sizeOf(tasks, 0))
- assertThat(emptyOf(tasks))
- отличий не так и много )
- ну то уже субъективно
- можно и так и так -
- или пара sizeOf + emptyOf
- или один универсальный sizeOf
- */
- ****************************************
- public static ExpectedCondition<Boolean> minimumSizeOfVisible(final By elementsLocator, final int expectedSize) {
- /*
- тут - похоже действуй
- как в exactTextsOfVisible
- собери список видимых элементов
- и проанализируй его размер
- только теме нужен - не minimumSizeOfVisible
- а sizeOfVisible ( с логикой похожей на sizeOf)
- */
- *************************************************
- /*
- еще - не хватает
- ExpectedCondition<WebElement> elementWithCssClass(final By elementsLocator, final String cssClass)
- далее - код не смотрела
- давай пока с кондишенами разберемся
- перед разговором со мной, о котором мы договаривались
- постарайся проработать это ревью
- чтоб мы уже новые вопросы разбирали а не эти же
- */
Advertisement
Add Comment
Please, Sign In to add comment