julia_v_iluhina

Untitled

Jan 8th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.27 KB | None | 0 0
  1. /*
  2.     на твое усмотрение
  3.     можно сделать в этой версии и еще раз отдать на равью
  4.     а можно дорабатывать это - в следующей версии
  5.    
  6.     закрепи эти задания - как отдельные branch в репозитории
  7.     или вообще делай задания в разных репозиториях - если так удобнее
  8.     возможно - захочешь потом взглянуть на каждое из вариантов решений
  9.    
  10.     также = в следующей версии уходи от использования @FindBy списков и элементов
  11.     там где ты оперировал  @FindBy прокси элементом или списком - оперируй локатором By
  12.     получится не хуже и не сложнее )
  13. */
  14. *********************************
  15. public static ExpectedCondition<WebElement> nthProxyElementHasText(final List<WebElement> elements
  16.             , final int index
  17.             , final String expectedText) {
  18.  
  19.         ....
  20.  
  21.             public String toString() {
  22.                 return String.format("\nText of %s element:"
  23.                                 + "\nExpected text should be: %s"
  24.                                 + "\nActual text is: %s\n"
  25.                         , index
  26.                         , expectedText
  27.                         , actualText);
  28.             }
  29.         ...
  30.     public static ExpectedCondition<List<WebElement>> texts(final List<WebElement> elements, final String... texts) {
  31.         ...
  32.             public String toString() {
  33.                 return String.format("\nTexts of list elements %s"
  34.                                 + "\nshould contain: %s"
  35.                                 + "\nwhile actual texts: %s\n"
  36.                         , elements.toString()
  37.                         , Arrays.toString(texts)
  38.                         , actualTexts);
  39.             }
  40. /*
  41.     оба кондишена - оперируют списком веб-элементов
  42.     но в toString() одного кондишена - не выводишь elements, а в другом - выводишь
  43.  
  44.     тут лучше быть последовательным
  45.     я бы выводила
  46. */
  47. *************************************
  48. public static ExpectedCondition<WebElement> nthProxyElementHasText(final List<WebElement> elements
  49.             , final int index
  50.             , final String expectedText) {
  51.  
  52.         return new ExpectedCondition<WebElement>() {
  53.             public WebElement apply(WebDriver driver) {
  54.                 try {
  55.                     actualText = elements.get(index).getText();
  56.                     return actualText.contains(expectedText) ? elements.get(index) : null;
  57.  /*
  58.     сначала - получи веб-элемент
  59.     у него - текст
  60.     и при необходимости - вернешь ранее полученный веб-элемент
  61.  
  62.     мотивы те же что и раньше - на чем делали выводы - тем и оперируем
  63.  */
  64. ***************************************************
  65.  
  66.     public static ExpectedCondition<List<WebElement>> texts(final List<WebElement> elements, final String... texts) {
  67.         ...
  68.                 if (.....) {
  69.                     return null;
  70.                 } else {
  71.                     for (....) {
  72.                         if (...) {
  73.                             return null;
  74.                         }
  75.                     }
  76.                     return elements;
  77.                 }
  78. /*
  79.     раз мы не стремились реализовать - используя единственный return
  80.     то стоит упростить до
  81. */
  82.                 if (.....) {
  83.                     return null;
  84.                 }
  85.                 for (....) {
  86.                     if (...) {
  87.                         return null;
  88.                     }
  89.                 }
  90.                 return elements;
  91. /*
  92.     по сути - та же логика
  93.     но структура кода попроще
  94.     мы так можем переписать - т к любой return = выход из метода
  95. */
  96. *************************************************************************
  97.     public void assertEmail(int index, String subject) {
  98.         assertThat(driver, ..., 10);
  99.     }
  100.  
  101.     public void assertEmails(String... texts) {
  102.         assertThat(driver, ...., 10);
  103.     }
  104. /*
  105.     я бы вызывала assertThat с двумя параметрами и на уровне тест-класса установила подходящий таймаут
  106.     Configuration.timeout - ....
  107.  
  108.     причина - не только эти проверки для gmail тормозят
  109.     но еще и все остальное
  110.    
  111.     посмотри на свою же селенидовскую версию этого задания - как там устанавливал Configuration.timeout
  112.     тут - полная аналогия
  113. */
  114. ***************************************************
  115. https://docs.google.com/document/d/1BiYTLdypDfucSqiY9isv1HCKKQIxelzqYrN-3Ku1RWM/edit?usp=sharing
  116. /*
  117.     примени это в своем решении для всех разработанных кондишенов
  118.  
  119.     если тебе будет проще - оперируй не типом Function<? super WebDriver, V> (это тип предка ExpectedCondition)
  120.     а ExpectedCondition<V>
  121.     поскольку кетчер бует применяться к потомкам ExpectedCondition - это будет ОК
  122.  
  123.     если захочешь поразбираться с дженериками
  124.         про дженерики в общем(русский)
  125.         http://www.quizful.net/post/java-generics-tutorial
  126.  
  127.         http://www.tutorialspoint.com/java/java_generics.htm
  128.         http://developer.alexanderklimov.ru/android/java/generic.php
  129.  
  130.         конвеншенcы      http://stackoverflow.com/questions/2900881/generic-type-parameter-naming-convention-for-java-with-multiple-chars
  131.         https://docs.oracle.com/javase/tutorial/java/generics/types.html
  132.  
  133.         уроки
  134.         http://docs.oracle.com/javase/tutorial/extra/generics/index.html
  135.  
  136.         очень приличный faq (есть pdf, и есть кое-что еще, помимо дженериков)
  137.         http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html
  138.  
  139.         ----------------------------------------------------------
  140.         для понимания кетчера (Catcher)
  141.         http://grepcode.com/file/repo1.maven.org/maven2/com.google.guava/guava/r06/com/google/common/base/Function.java
  142.         http://www.programcreek.com/java-api-examples/com.google.common.base.Function
  143.         https://docs.oracle.com/javase/tutorial/java/generics/lowerBounded.html
  144.         http://stackoverflow.com/questions/3847162/java-generics-super-keyword
  145.         http://stackoverflow.com/questions/2800369/bounding-generics-with-super-keyword
  146.         http://stackoverflow.com/questions/1910892/what-is-the-difference-between-super-and-extends-in-java-generics
  147. */
  148. *******************************************
Advertisement
Add Comment
Please, Sign In to add comment