julia_v_iluhina

Untitled

Oct 26th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.13 KB | None | 0 0
  1. tasks.filterBy(visible).shouldHave(exactTexts(taskTexts));
  2. /*
  3.     нам нужна ждущая проверка
  4.     ситуации - сравнить тексты видимых элементов из списка элементов с переданными текстами
  5.  
  6.     мы - умеем реализовывать ждущую проверку для списка элементов вот так -
  7.     assertThat(someCondition(elementsLocator, ...))
  8.  
  9.     вот и реализуем кондишен exactTextOfVisibleElements(By elementsLocator, String... expectedTexts)
  10.  
  11.     кондишен будет похож на textsOf
  12.     только - после получения списка элементов по локатору - построй другой список - из элементов, которые видимы
  13.     и уже далее - у этого списка видимых элементов - сверяй тексты с  expectedTexts
  14.  
  15.     фактически - мы и фильтрацию, и проверку - делаем внутри кондишена
  16.     выкрутились)
  17.     не очень красиво, но вполне надежно и универсально
  18.  
  19.     для варианта  tasks.filterBy(visible).shouldBe(empty);
  20.     аналогично и тут
  21.     можно реализовать кондишен sizeOfVisible
  22.     и его использовать тут
  23. */
  24. ****************************
  25. $(byCss("#todo-count>strong")).shouldHave(exactText(String.valueOf(activeTasksCount)));
  26. /*
  27.     тут  - возможно, найдешь и стандартный кондишен для такой проверки
  28.     проверяем - текст элемента на точное совпадение
  29.     https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html
  30.  
  31.     в принципе - и свой кондишен exactText можно реализовать
  32. */
  33. ******************************************
  34. tasks.findBy(cssClass("editing"))
  35. /*
  36.     тут - у нас цель - найти элемент списка с таким-то классом
  37.    
  38.     у тебя уже есть кондишен ExpectedCondition<WebElement> elementWithText
  39.    
  40.     а нам нужен - ExpectedCondition<WebElement> elementWithCssClass
  41.    
  42.     WebElement есть метод  getAttribute
  43.     можно получить значение любого атрибута
  44.     в том числе и атрибута class
  45.    
  46.     в этом атрибуте - через пробел перечислены cssClass-ы элемента
  47.     (например - у редактируемой активной таски - "active editing")
  48.    
  49.     когда мы нашли элемент - когда у элемента хотя бы один cssClass в точности равен переданному классу
  50. */
  51. ************************************************
  52. tasks.filterBy(cssClass(taskClass)).findBy(exactText(taskText))
  53. /*
  54.     тут - чуть посложнее, но схема та же
  55.    
  56.     какая наша цель - найти элемент с таким-то текстом
  57.     среди элементов списка, у которых есть класс такой-то класс
  58.    
  59.     проверять класс - мы уже научились)
  60.    
  61.     из списка веб-элементов
  62.     отфильтровываем только те, у которых есть нужный нам класс
  63.     и среди них ищем элемент с нужным нам текстом
  64.    
  65.     т е - опять - получим такой кондишен
  66.     который и фильтрует, и ищет элемент в отфильтрованном
  67.    
  68.     кстати, можешь упростить реализацию  - пользуйся просто toggle )
  69.     тогда и такой кондишен не понадобится )
  70.     т к вот этого  - filterBy(cssClass(taskClass)) - уже делать не будем
  71. */
Advertisement
Add Comment
Please, Sign In to add comment