julia_v_iluhina

Untitled

Nov 17th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.31 KB | None | 0 0
  1. import static com.home.searchtask.ToDo.*;
  2. /*
  3.     для пейджа-модуля в задании - тест для Google Search - ToDo - довольно странное имя)
  4.     оно что нам говорит?
  5.  
  6.     похоже - только то, что задача переделывалась из todoMVC )
  7.  
  8.     вообще - в этом задании - не обязательно было реализовывать пейдж
  9.     т к согласно условия -
  10.     You will do only a smoke coverage and you most probably will not reuse "steps" in other tests.
  11.     (Or you don't know will you reuse or not)
  12.  
  13.     но раз уже пейдж есть - то пусть будет в этом задании
  14. */
  15.  
  16. public class GoogleSearchTaskTest {
  17. /*
  18.     о чем говорит нам слово Task в имени тест-класса? )
  19.  
  20.     перечитай в faq раздел по неймингу)
  21. */
  22.  
  23.     @Test
  24.     public void searchTaskWorkFlow() {
  25.     /*
  26.         а тут мы что тестируем?
  27.         неужели todoMVC?
  28.  
  29.         судя по наванию тест-метода - да )
  30.     */
  31.  
  32.         ...
  33.  
  34.         searchTask("Selenium automates browsers");
  35.         /*
  36.             о чем говорит нам слово Task в имени тест-метода? )
  37.         */
  38.  
  39. ...
  40.         openFirstResult();
  41.         /*
  42.             раз уже реализуешь метод в пейдже - давай его сделаем более универсальным
  43.             и уточним имя метода
  44.             предлагаю релизовать метод followLink(int index)
  45.             с тем - чтобы вызывать followLink(0) - для клика на главной линке нулевого (т е самого первого - нумерация ведь с нуля) результата
  46.         */
  47.  
  48.         assertSeleniumOfficialPage();
  49.         /*
  50.             эти проверки - не имеют отношения к пейджу google search
  51.             хотя бы просто потому - что с другой страницей работают
  52.  
  53.             и эти проверки - специфичны - конкретно для этого метода
  54.             вряд ли они еще где-то понадобятся
  55.  
  56.             и их  код - простой и наглядный
  57.             потому - не надо тут каких-то вспомогательных методов
  58.             реализуй эти проверки прямо в тест-методе
  59.             так будет проще и нагляднее
  60.         */
  61.     }
  62. *********************************************************************
  63. public class ToDo {
  64. /*
  65.     вспоминай работу по пейджам
  66.     где правильно расположить пейдж
  67.  
  68.     про имя класса пейджа - писала выше
  69. */
  70.  
  71.     ElementsCollection searchTasks = $$(".r");
  72. /*
  73.     http://joxi.ru/Y2LXgYnfnRzBo2 - твой вариант
  74.     http://joxi.ru/l2ZNaR0F80XoY2 - нужный вариант
  75.  
  76.     во-первых - надо чтоб в элемент = результат поиска
  77.         отбиралась не только главная линка а все, что касается результата
  78.         сравни рисунки
  79.  
  80.     во-вторых - вот такие результаты - ка первый сверху - не дожны попадать в наш список результатов
  81.     обрати внимание - этот первый - отличается от всех следующих 10-ти результатов
  82.  
  83.     бывает - что в результатах где-то в середине содержится такой блок
  84.     бывает - таких блоков несколько
  85.     по-разному)
  86.  
  87.     найди из результатов - именно те, что 10 основных
  88.     в крайне редких случаях - их таки не 10
  89.     будут у тебя такие сложности - показывай скриншоты - помогу разобраться
  90.     как правило - 10 основных результатов
  91. */
  92.  
  93.     public static void searchTask(String searchTask) {
  94. /*
  95.     подумай и нам именем метода, и над именем параметра
  96.  
  97.     и для того же элемента - посмотри другие его свойства
  98.     обрати внимание на name
  99.     оттолкнись от него
  100.  
  101.     это будет более наглядно
  102.     строки поиска у гугла в разных продуктах - зачастую имеют такой name
  103. */
  104.  
  105.     public static void assertResultsAre(int searchResults) {
  106. /*
  107.     подумай и над названием метода и над названием параметра
  108.  
  109.     оперируй переменной, которую выше объявил для работы с результатами поиска
  110.     не надо один и тот же локатор повторять
  111. */
  112.     public static void assertFirstResult(String firstResult) {
  113. /*
  114.     Тут достаточно проверить - что переданный текст содержится в тексте результата - это проверяет кондишен text
  115.  
  116.     разумнее реализовать метод - который может проверить такой-то результат (согласно его индекса)
  117.  
  118.     подумай и над названием метода и над набором параметров и над их названиями
  119.  
  120.     дальше
  121.     что мы проверяем
  122.     мы проверяем текст такого-то результата
  123.     вот и отталкивайся от переменной - которую мы выше объявили для коллекции результатов поиска
  124.     получай такой-то результат
  125.     и проверяй его текст
  126.  
  127.     те же подходы, что мы и раньше использовали
  128.     мы минимизируем количество независимых селекторов
  129.     делаем код более читабельным и более DRY
  130.  
  131. */
  132.     public static void openFirstResult() {
  133. /*
  134.     писала выше - как реализовать метод по-другому - чтоб можно было с помощью метода - выбирать нужный результат по его индексу
  135.     точно также - в коде метода - оттолкничь от коллекции результатов
  136.     получи такой-то результат
  137.     у него - главную линку
  138.     и уже на ней - кликай
  139.    
  140.     и никаких новых независимых селекторов)
  141. */
  142.  
  143.     public static void assertSeleniumOfficialPage() {
  144. /*
  145.     эти строки кода - ок
  146.     но должы жить в тест-методе
  147.     почему - написала выше)
  148. */
Advertisement
Add Comment
Please, Sign In to add comment