julia_v_iluhina

Untitled

Sep 15th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.78 KB | None | 0 0
  1. public class Configuration {
  2.     public static int timeout = 10;
  3. }
  4. /*
  5.     у тебя уже есть класс с настройками
  6.     это ок
  7. */
  8. ************************
  9.  
  10.     public static <V> V assertThat(WebDriver driver, ExpectedCondition<V> condition, int timeout) {
  11.         return new WebDriverWait(driver, timeout).until(condition);
  12.     }
  13. /*
  14.     в этот метод добавил параметр  timeout  - тоже ок
  15.  
  16.     только зачем тебе первый параметр WebDriver driver?
  17.     у тебя же в этом классе - есть механизм получения вебдрайвера - абстрактный метод getWebDriver()
  18.  
  19.     убери параметр WebDriver driver
  20.     и в коде
  21.     new WebDriverWait(getWebDriver(), timeout)...
  22.  
  23.     в это же и весь смысл с абстрактным классом
  24.     мы уже здесь, в абстрактром предке говорим
  25.  
  26.     что у нас в потомках - будет реализован метод getWebDriver()
  27.     с такой-то сигнатурой
  28.     и на это рассчитывая - мы в коде можем использовать этот абстрактый метод getWebDriver()
  29.  
  30.     а затем - в каждом из потомков этого класса
  31.     мы реализуем свою версию getWebDriver()
  32. */
  33.  
  34. ************************
  35.  
  36.   public <V> V assertThat( ExpectedCondition<V> condition) {
  37.         return (new WebDriverWait(getWebDriver(), 10)).until(condition);
  38.   }
  39. /*
  40.     хм...
  41.     а тут - нормально применяешь getWebDriver()
  42.     не понятно )
  43.  
  44.     поправь все методы в классе ConciseAPI - насчет параметра WebDriver driver и использования getWebDriver()
  45.     больше про  это не пишу
  46.  
  47.     вспоминаем
  48.     у нас есть класс Configuration
  49.     и там мы задали таймаут timeout
  50.  
  51.     почему же здесь - используем 10, а не Configuration.timeout?
  52.     просмотри прошлое ревью про это
  53.     если не понятно - спроси
  54.  
  55.     еще момент
  56.     если уже есть метод assertThat(ExpectedCondition<V> condition, int timeout)
  57.     то - внутри этого метода - достаточно вызвать assertThat(condition, Configuration.timeout)
  58.  
  59.     так  - получишь более DRY код
  60.     про DRY - почитай в faq нашем, да и вообще погугли
  61.  
  62. */
  63. **************************************
  64. public class GMailPages extends BasePage {
  65. /*
  66.     это не пейджИ, а пейдж (один)
  67.     GMailPage - будет ок
  68.  
  69.     пекедж для пейджей - действительно - называют pages
  70.     т к даже если сейчас у тебя один пейдж
  71.     не факт - что потом их не прибавится
  72. */
  73. *********************
  74.     //public static List<WebElement> mails = driver.findElements(By.cssSelector("[role='main'] .zA"));
  75. /*
  76.     верно закомментарил...
  77.     такой номер у нас не пройдет теперь
  78.  
  79.     про это - потом
  80.     когда проверки assertMail и assertMails будем реализовывать
  81. */
  82. **************************************
  83.     public  void send(String email, String subject) {
  84.         ...
  85.         $(driver, By.id(":lo")).click();
  86.     /*
  87.         посмотри у себя же в селенидовской версии - как это реализовывал
  88.         можешь и тут поступить аналогично?
  89.     */
  90. ***********************************************
  91.     public void search(String text) {
  92.         $(driver, By.name("q")).sendKeys("\"" + text + "\"" + Keys.ENTER);
  93.     }
  94. /*
  95.     уверен - что нужно кавычки в строку поиска добавлять?
  96. */
  97. ***************************************
  98.    /*
  99.     public static void assertMail(int index,String mailText) {
  100.     assertTrue(driver.findElements(By.cssSelector("[role='main'] .zA")).get(index).contains(mailText));
  101.     }
  102.     */
  103. /*
  104.     давай пока все кроме этих проверок приведем в порядок
  105.     пока оставь это закомменченным
  106. */
  107. ***************************************
  108. public class GMailTest extends TestData  {
  109. /*
  110.     строки 134-137 прошлого ревью
  111.  
  112.     BaseTest - был хорошо реализован
  113.     то, что он наследовался от ConciseAPI  - тоже давало нам ряд бонусов
  114.  
  115.     все методы ConciseAPI - были доступны для вызова в тест-классе
  116.     что хорошо
  117.  
  118.     теперь - BaseTest нету вообще, а тест-класс наследуется от класса с тестовыми данными
  119.  
  120.     это - тест-класс наследуется от класса с тестовыми данными - очень плохая идея
  121.  
  122.     если ты про предка и потомка не можешь сказать
  123.     потомок - это тоже предок
  124.     то - ты наверняка наследование применил не там, где это нужно
  125.  
  126.     тест-класс - это тоже тестовые данные
  127.     хорошо звучит?
  128.     )
  129.  
  130.     тебе не нужно наследоваться от TestData
  131.     в тест-методе - просто - используй TestData
  132.  
  133.     а вот BaseTest и наследование тест-класса от него - верни
  134. */
  135. *********************************
  136.     private WebDriver driver = new FirefoxDriver();
  137. ...
  138.  
  139.     @After
  140.     public void closeDriver() {
  141.         driver.quit();
  142.     }
  143. /*
  144.     это у тебя в BaseTest уйдет
  145.  
  146.     кстати, ты не прислушался к рекомендациям - строки 113-127
  147.  
  148.     интересно, почему )
  149.  
  150.     да, я писала - что можно и так)
  151.     и что все зависит от поставленной задачи
  152.  
  153.     напиши мне в слеке - почему ты выбрал в данном случае стратегию -
  154.     создавать вебдрайвер перед запуском каждого тест-метода?
  155.  
  156. */
  157. *****************************
  158.         @Before
  159.         public void setUp() {
  160.             Configuration.timeout = 15;
  161.         }
  162. /*
  163.     да, ты установил таймаут
  164.     это ты молодец)
  165.  
  166.     только пока Configuration.timeout не будет использоваться в assertThat( ExpectedCondition<V> condition)
  167.     он ни на что влиять не будет
  168.  
  169.     если этот момент не понятен - давай обсудим
  170. */
  171. *************************
  172.   GMailPages pages=new GMailPages(driver);
  173. /*
  174.     создаем пейдж, а не пейджИ
  175. */
  176. *********************************
  177. /*
  178.     вот это отлаживай
  179.     и затем - продолжай  по прошлому ревью идти
  180.  
  181.     начиная со строки 201
  182.     если текст сложный - давай планировать поговорить
  183.     к разговору - определись с перечнем вопросов
  184.     и с ответами на мои вопросы)
  185.     выше был первый вопрос
  186.     и еще один - какую версию ты намерен реализовывать - с FindBy или нет
  187. */
Advertisement
Add Comment
Please, Sign In to add comment