julia_v_iluhina

Untitled

Nov 27th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.96 KB | None | 0 0
  1. static ElementsCollection letters = $$(".aDP tbody tr div>span>b");
  2.  
  3. /*
  4.     посмотри - что ты находишь с помощью своего локатора
  5.  
  6.     сравни с http://joxi.net/krDOZldF0RKkBA
  7.  
  8.     цель - найти именно письма, а не их темы
  9.     каждое письмо = вся строка, которая описывает письмо
  10.  
  11.     на иллюстрации - есть подсказки и для локатора
  12.  
  13.     насчет имени для коллекци писем - я бы переменную назвала mails
  14.     цель - не использовать разные термины для одного понятия
  15.     уже ведь термины gmail, email, mails применяем
  16.     а тут еще и letters
  17. */
  18. ********************************
  19. public static void mailLogin(String email, String password)
  20. /*
  21.     достаточно точно будет  - имя метода - login
  22. */
  23. ****************************************
  24. static String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss").format(Calendar.getInstance().getTime());
  25. /*
  26.     что это
  27.     это тестовые данные - уникальный subject
  28.  
  29.     вопрос - что делают тестовые данные в пейдже?
  30.     и еще вопрос - почему имя переменной не говорит  - что это по сути
  31.     а по сути это - тестовые данные - subject
  32.     да, ты собирал эту строку как timeStamp
  33.     но ведь что это, для чего это - это именно тестовые данные - subject
  34.  
  35.     нужно поменять имя переменной
  36.     я бы еще рекомендовала - помимо уникальной составляющей - использовать в строке что-то наглядное
  37.     вот так например
  38.     timeStamp = "subject" + new SimpleDateFormat("yyyyMMddHHmmss").format(Calendar.getInstance().getTime());
  39.  
  40.     и еще очень важное
  41.     не располагай тестовые данные внутри пейджа
  42.     тестовые данные - это то, что нам нужно для реализации шагов в тест-методе
  43.  
  44.     но этого совершенно не нужно для реализации методов пейджа
  45.     у нас же есть цель - чтобы методы пейджа были инструментами
  46.     которые можно переиспользовать многократно
  47.     потому - все что нужно для реализации метода пейджа - реализуй как его мараметры
  48.  
  49.     и уже в тест-методе
  50.     объявишь и инициализируешь subject
  51.     и передашь его в качестве параметра
  52.     в тот же метод send
  53.  
  54.     такой подход обеспечит наиболее универсальный способ реализации методов пейджа
  55.     и мало того - еще это скажется хорошо - на логике тест-метода
  56.     она будет легче пониматься благодаря такой организации - т к мы ничего важного не спрятали внутрь методов пейджа
  57.     код будет выглядеть понятным и логичным - не будет "магии" -
  58.     каждый шаг - понятен, чем этот шаг оперирует - тоже понятно
  59. */
  60. ****************************************
  61.  public static void sendMail(String address){
  62.  /*
  63.     имени send - достаточно
  64.  
  65.     в качестве параметров - передавай и email, и subject = все тестовые данные
  66.  
  67.     и не забывай - не нужно вводить новые и новые термины для переметров методов
  68.  
  69.     тут - будет к месту - email и subject
  70.     исходя из задач и уже применяемых терминов
  71.  */
  72.  *****************************************
  73.   public  static void assertInInbox(String...timeStamps){
  74.        letters.shouldHave(exactTexts(timeStamps));
  75.   }
  76. /*
  77.     ну да...
  78.     ты и спрашивал про эту проверку
  79.  
  80.     много тут вопросов к коду)
  81.  
  82.     давай разбиратья вообще по сути
  83.     какие проверки нам нужны
  84.  
  85.     читаем задание
  86.     check that mail arrived
  87.     check that mail exist in “Sent”
  88.     search the arrived mail by topic and ensure only 1 is present in search results
  89.  
  90.     первые 2 проверки - касаются одного, спмого верхнего письма из списка писем
  91.     т е по сути = мы дважды воспользуемся одной и той же проверкой (и для Inbox, и для Sent)
  92.     проверкой состояния самого верхнего письма в списке
  93.     потому и текущее название метода - надо переделывать
  94.     имя метода должно точно отражать - что делает метод
  95.  
  96.     третья проверка - проверка состояния всего списка
  97.     количество элементов - такое-то
  98.     и тексты у элементов - такие-то
  99.  
  100.     начнем с первой и второй проверок
  101.  
  102.         что мы проверяем
  103.         мы проверяем состояние конкретного письма
  104.         какого - самого верхнего в списке = с индексом = 0
  105.         разумно и индекс вынести как параметр метода
  106.  
  107.         что проверяем = assertMail
  108.         чем уточняем - int index,
  109.         вхождение какого текста ищем в мейле - String mailHeaderText
  110.         почему не timeStamp - думаю, уже понятно
  111.         почему не subject - потому что мы просто проверим - что в тексте элемента = письма
  112.         содержится такой-то текст
  113.         т е - мы не будем внутри элемента-письма - уточняться до внутреннего элемента - subject-а
  114.  
  115.         у нас есть коллекция мейлов - mails
  116.         как получить такой-то єлемент по индексу = mails.get(...)
  117.         как проверить - что в тексте элемента - содержится такой-то текст - воспользоваться в проверке кондишеном text
  118.  
  119.     третья проверка
  120.         верно, ее разумно реализовывать как =
  121.         проверить текстЫ мейлов в списке мейлов
  122.  
  123.         тогда эту проверку можно будет использовать и для того чтоб проверить
  124.         что писем в списке только одно и его текст - такой-то
  125.  
  126.         и в других вариантах - тоже эта проверка пригодится
  127.  
  128.         только вот кондишен - exactTexts - уже не подойдет
  129.         т к нам нужно проверить - вхождение текста, а не равенство
  130.  
  131.         exactTexts & texts - оба кондишена проверяют количество + порядок + тексты
  132.         тексты - проверяют по-разному
  133.         exactTexts - на равенство
  134.         texts - на вхождение
  135.  
  136.         нам как раз вариант проверки на вхождение пригодится больше
  137.  
  138.         по именам для метода е иго параметров - писать не буду
  139.         для предыдущего ассерта - расписала
  140.         тут - подумай самостоятельно
  141.  
  142. */
  143. ****************************
  144.   public static void assertinSearch() {
  145.             $$(byText(timeStamp)).filter(visible).shouldHave(exactTexts(timeStamp));
  146.   }
  147. /*
  148.     такой проверки тебе не нужно
  149.     читай текст выше
  150.     там все расписано
  151.  
  152.     если тебе нужно проверить состояние списка мейлов - так и отталкивайся от него
  153.     а не от каких-то новых локаторов
  154. */
  155. ***************************************
  156. public class GoogleMailTest extends TestData {
  157. /*
  158.     Плохой вариант для организации иерархии
  159.  
  160.     если ты не можешь про предка и потомка сказать
  161.  
  162.     потомок - это тоже предок
  163.  
  164.     то значит - вариант с наследованием - не годится
  165.  
  166.     тест-класс - это тоже тестовые данные
  167.     можем сказать?
  168.  
  169.     Просто используй данные из TestData в тесте
  170.  
  171.     Я не вижу конфигурирования таймаута
  172.     если этот код в TestData - это в корне не верно
  173.  
  174.     настрой таймаут в тест-классе
  175. */
  176.  
  177.     @Test
  178.     public void openMailAndCheckHisWork () {
  179.     /*
  180.         что мы проверяем
  181.         login, send, receive and search
  182.  
  183.         если перечислять - то все
  184.         если не перечислять - воспользуйся советами из faq -
  185.         по неймингу
  186.         там есть советы именно для е2е методов
  187.         и ты ими уже пользовался
  188.     */
  189. ***************************************
  190.         mailLogin(TestData.mail,TestData.passwd);
  191.         /*
  192.             и тут не сокращай
  193.             не TestData.passwd
  194.             а  TestData.password
  195.         */
  196. *****************************************************
  197.        
  198.         searchMail();
  199.         /*
  200.             согласно задания
  201.             search the arrived mail
  202.            
  203.             перед поиском - вернись в inbox
  204.            
  205.             и тут заостряю внимание - втрока поиска = это тоже тестовые данные
  206.             и должны быть переданы как параметр в метод пейджа
  207.            
  208.             думай над неймингом)
  209.         */
Advertisement
Add Comment
Please, Sign In to add comment