julia_v_iluhina

Untitled

Dec 6th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.62 KB | None | 0 0
  1. public class Google {
  2. /*
  3.     В этом задании - не обязательно было реализовывать пейдж
  4.  
  5.     т к согласно условия -
  6.     You will do only a smoke coverage and you most probably will not reuse "steps" in other tests. (Or you don't know will you reuse or not)
  7.  
  8.     Но раз уже пейдж реализован - то не нужно от него избавляться
  9.  
  10.     насчет имени пейджа
  11.     Google - слишком общее понятие
  12.     лучше - GoogleSearch
  13. */
  14. *************************************************
  15.     public static SelenideElement search = ...;
  16.     /*
  17.         мы обращаемся к элементу только в методе search
  18.         вопрос - нужна ли такая переменная?
  19.         для чего?
  20.     */
  21. *****************************************************
  22.     public static ElementsCollection results = ...;
  23.     /*
  24.         согласна - и переменная нужна - т к используем в нескольких методах
  25.         и селектор - ОК
  26.     */
  27. ***************************************************
  28.     public static SelenideElement firstResult = ...;
  29.     /*
  30.         а вот такая переменная - перебор )
  31.  
  32.         когда нам нужно обратиться к результату
  33.  
  34.         при проверке текста результата по индексу ...
  35.         и при выполнении перехода по главной линке результата по индексу ....
  36.  
  37.         раз уже мы реализовали пейдж
  38.             то разумнее реализовать методы
  39.  
  40.             проверка текста результата по индексу ...
  41.             переход по главной линке результата по индексу ....
  42.  
  43.  
  44.             индекс - стоит вынести как параметр таких методов
  45.             тогда такие методы могут быть использованы не только для работы с первым результатом
  46.  
  47.             значит - отталкиваемся от коллекции results и далее уточняемся до элемента - по его индексу
  48.             и далее - выполняем нужное нам
  49.  
  50.             соответственно - переменная нам не нужна
  51.     */
  52. ***********************************************************
  53.     public static void ensureGoogleOpened(){
  54.         if (!url().equals("http://google.com/ncr")) {
  55.             open("http://google.com/ncr");
  56.         }
  57.     }
  58.     /*
  59.         в данном случае - такой метод создавать - преждевременно
  60.         у нас сейчас - всего один тест-метод
  61.  
  62.         и мы пока не знаем о наших будущих потребностях и планах
  63.  
  64.         потому - вот эта логика -  если урл не открыт, то отркрыть - нам пока ни к чему
  65.  
  66.         достаточно метода visit() - в котором мы просто выполняем open("http://google.com/ncr");
  67.     */
  68. ***********************************************************
  69.     public static void assertResultsCount(int searchCount){
  70. /*
  71.     searchCount - не совсем подходит
  72.  
  73.     с учетом имени метода - достаточно count
  74.     или resultsCount
  75. */
  76. ******************************************
  77.     public static void assertText(SelenideElement searchResult, String searchResultText){
  78. /*
  79.     уже выше писала про это - предлагаю метод assertResult(int index, String text)
  80.  
  81.     нам же не любые SelenideElement-ы подойдут тут)
  82.     а лишь какой-то из элементов коллекции results
  83.  
  84.     имя параметра searchResultText - многовато слов, которые уже ничего не уточняют
  85.     термин results - мы уже применяем, про  search - скажем на уровне имени пейджа
  86.  
  87.     с учетом имени метода assertResult - параметр можно просто назвать text
  88.     или resultText
  89. */
  90. *********************************************************
  91.     public static void visit(SelenideElement searchResult){
  92. /*
  93.     и тут у нас будет метод с похожей функциональностью
  94.     но с абором параметров попроще)
  95.  
  96.     followLink(int index)
  97.  
  98.     из тех же соображений
  99.  
  100.     нам ведь далеко не любой SelenideElement подойдет
  101.     а так - внутри метода будем оперировать коллекцией results
  102.  
  103.     захочешь - не ошибешься)
  104.    
  105.     а главную линку у результата - ищешь верно)
  106. */
  107. *************************************
  108.     public static void assertSeleniumOfficialPageIsLoaded(){
  109. /*
  110.     вот это - уже точно не относится к функциональности пейджа GoogleSearch
  111.     предлагаю вынести этй проверку прямо в тест-метод
  112.  
  113.     ведь код  - понятный
  114.     и переиспользовать его - мы вряд ли будем
  115.  
  116.     а после такой проверки - которая кстати, выполнит и роль умного ожидания - что страница загрузилась
  117.     можно уточниться - проверить урл открытой страницы
  118.     используй jUnit-овский assertEquals
  119.     http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertEquals(double, double)
  120.  
  121.     обе эти проверки - некорректно выностить в пейдж
  122.     т к это уже другая страница и к логике GoogleSearch - это не относится
  123.     да и  - проверки простые, наглядные
  124.     и вряд ли их будут переиспользовать в рамках тестов GoogleSearch в будущем
  125. */
  126. *******************
  127. public void testSearch(){
  128. /*
  129.     вообще мы тут тестируем и search, и followLink
  130.    
  131.     testSearchAndFollowLink  - будет корректнее
  132. */
Advertisement
Add Comment
Please, Sign In to add comment