Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- на самом деле - остались мелочи)
- решение уже рабочее
- просто можно сделать код - красивее, оптимальнее, нагляднее
- давай немного заполируем)
- */
- http://joxi.ru/p275M9zs0B87gr
- /*
- по сути - все ок
- 1 - нам на уровне класса - достаточно только этой переменной, обрати внимание на имя
- остальные - нам нужны только в apply, так пусть там и будут
- Такой подход упрощает восприятие кода - т к на каждом уровне - только необходимое
- 2 - переменную для списка элементов - испольуем только в apply
- тут и объявим ее
- 3 - нам не нужно отдельно переменной для текущего списка элементов, и так - ок
- 4 - обрати внимание на формулировки - имя переменной ,
- тоже переменная объявлена ровно там - где нужна
- формулировки - чуть ниже поясню
- 5 - не elements, а element - достаточно у одного элемента чтобы был соответствующий класс
- 6 - выводим весь список - значение атрибута class - для всех элементов списка
- т к - мы искали элемент списка - анализируя классы
- это может быть важной информацией
- про формулировки
- Имя элемента и его классы
- в выражении
- <element class=“green bold”>
- element - имя элемента
- class - имя атрибута
- “green bold” - значение атрибута class
- green - css класс элемента element
- bold - еще один css класс элемента element
- */
- *****************************************
- public static ExpectedCondition<List<WebElement>> exactTextOf(final By elementsLocator, final String... expectedTexts) {
- ...
- elementsTexts = new ArrayList<>();
- List<WebElement> innerElements = driver.findElements(elementsLocator);
- elementsTexts = getTexts(innerElements);
- /*
- эти строчки можно упростить и
- имена привести в соответствие с кодом других кондишенов
- одно и то же понятие - обозначай одним и тем же термином
- см вариант ниже
- */
- List<WebElement> actualElements = driver.findElements(elementsLocator);
- actualTexts = getTexts(actualElements);
- *********************************
- public static ExpectedCondition<List<WebElement>> exactTextsOfVisible(final By elementsLocator, final String... expectedTexts) {
- ...
- elementsTexts = getTexts(getVisibleElements(innerElements));
- ...
- /*
- про формулировки - и тут приди к своей же терминологии
- */
- // isContainedInList(elementsTexts, expectedTexts);
- /*
- ага, видела этот метод )
- если его доработать - то и тут, и в exactTextOf - сможешь его использовать
- ниже разберем
- а тут - не хватает сверки размера списка текстов видимых элементов и количества переданных текстов
- */
- ....
- ***************************************************
- public static boolean isContainedInList(List<String> list, String... texts) {
- for (int i = 0; i < list.size(); i++) {
- if (list.get(i).equals(texts[i])) {
- return true;
- }
- }
- return false;
- }
- /*
- таки я в прошлом ревью - ошиблась про isContainedInList
- возможно - запутала тебя, сорри
- распутываемся
- наша цель - в 2-ух кондишенах exactTexts...
- сверить
- размер
- порядок
- тексты
- что по сути нам надо сравнить - 2 набора текстов
- areTextsEqual(List<String> texts1, String... texts2)
- минимально -
- подправь сигнатуру метода
- и в реализации - сверь размер + порядок + тексты
- используй этот метод в обоих кондишенах exactTexts...
- а если хочется красоты и немного challenge ) - оптимизируй реализацию
- на входе - 2 набора строк для сравнения
- список строк
- и var-args параметр texts
- с которым можно работать как с массивом
- http://www.linkex.ru/java/varargs.php
- а массив - легко преобразовать список строк
- http://stackoverflow.com/questions/2607289/converting-array-to-list-in-java
- А раз так - можно сравнить 2 списка в итоге)
- https://docs.oracle.com/javase/8/docs/api/java/util/List.html#equals-java.lang.Object-
- http://www.baeldung.com/java-test-a-list-for-ordinality-and-equality
- https://www.ibm.com/developerworks/ru/library/j-jtp05273/
- */
- *******************************
- public static ExpectedCondition<Boolean> sizeOf(final By elementsLocator, final int size) {
- ...
- if (actualElementsSize == size) {
- return true;
- }
- return false;
- /*
- вот этот кусочек - можно в одну строку переписать
- return (actualElementsSize == size);
- в sizeOfVisible - похожая ситуация
- */
- ***********************************
- public static By byText(String text)
- public static By byTitle(String text)
- public static By byExactTitle(String text)
- /*
- а чего ты это убрал из ConciseAPI?
- полезные методы )
- я бы вернула
- */
- ***************************************
- public static void assertSizeOfTasks(int size) {
- public static void assertSizeOfVisibleTasks(int size) {
- /*
- таки не послушался меня)
- прошлое ревью, строки 295 - 301
- ну... настаивать не буду )
- */
Advertisement
Add Comment
Please, Sign In to add comment