julia_v_iluhina

Untitled

Sep 30th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.36 KB | None | 0 0
  1. public class Configuration {
  2.  
  3.     public static int timeout = 4000;  //using milliseconds
  4.     public static long pollingInterval = 100;
  5. }
  6. /*
  7.     лучше поподробнее, например так
  8. */
  9.  
  10. public class Configuration {
  11.     //default interval for WaitFor.Until - smart waiting check one condition, in milliseconds
  12.     public static int timeout = 4000;
  13.     //interval between checks inside WaitFor.Until, in milliseconds
  14.     public static int pollingInterval = 100;
  15. }
  16. **************************************
  17. public abstract class AbstractCondition<V> extends Condition<V> {
  18.  
  19. ...
  20.     public V apply(By locator) {
  21.         ...
  22.         V element = getWrappedEntity();
  23.         /*
  24.             тут мы еще не знаем - это элемент или список)
  25.             корректнее назвать wrappedEntity )
  26.             вместо element
  27.         */
  28. *******************************************
  29.         public abstract class AbstractCondition<V> extends Condition<V> {
  30.  
  31.           ...
  32.             public String toString() {
  33.  
  34.                 return String.format("[%s] for [%s] found by:[%s] expected [%s] actual [%s]",
  35.                         getClass().getSimpleName(), locator, identity(), expected(), actual());
  36.             }
  37. /*
  38.     все хорошо
  39.     только добавь переходы на следующую строку
  40.     т к может не удобно читать
  41. */
  42. *****************************************
  43. @Override
  44.     public String identity() {
  45.         if(getWrappedEntity() == null) {
  46.             return "null";
  47.         }
  48.         else {
  49.             return getWrappedEntity().toString();
  50.         }
  51.     }
  52. /*
  53.     этот метод нам нужен потупее)
  54.  
  55.     достаточно чтобы он возвращал строки - "elements"("collection")
  56.     посмотри - как используется этот метод в toString класса AbstractCondition<V>
  57.     нам просто надо чуть уточнить фразу - написать - что за сущность
  58.  
  59.     нам надо написать -
  60.     для коллекции так-то найденной
  61.     для элемента так-то найденного
  62.  
  63.     тут все просто)
  64. */
  65. **************************************
  66. public abstract class ElementCondition extends AbstractCondition<WebElement> {
  67. /*
  68.     и тут реализуй identity()
  69.     только в этот раз - возращай строку "element"
  70.  
  71.     и уже в потомках - не надо
  72. */
  73. ****************************************
  74. public class ExactText extends ElementCondition {
  75.  
  76.     private String expectedText;
  77.     private boolean isExactText = false;
  78.     /*
  79.         нам бы лучше сохранить сам actualText
  80.     */
  81. ...
  82.  
  83.     @Override
  84.     public boolean check(WebElement element) {
  85.         if(element.getText().matches(expectedText)) {
  86.             isExactText = true;
  87.         }
  88.         /*
  89.             сохрани в переменную - actualText - element.getText()
  90.  
  91.             и возвращай actualText.equals(expectedText)
  92.  
  93.             не очень поняла - зачем тебе тут matches
  94.  
  95.             https://www.tutorialspoint.com/java/java_string_matches.htm
  96.         */
  97.         return isExactText;
  98.     }
  99.  
  100.     @Override
  101.     public String identity() {
  102.    /*
  103.         этот метод будет в предке
  104.         касается всех без исключения кондишенов
  105.    */
  106.  
  107.     @Override
  108.     public String expected() {
  109.         return "true";
  110.         /*
  111.             тут вернем ожидаемый текст
  112.         */
  113.     }
  114.  
  115.     @Override
  116.     public String actual() {
  117.         return Boolean.toString(isExactText);
  118.         /*
  119.             а тут - фактический
  120.         */
  121.     }
  122. /*
  123.     если кондишены сравнивают тест - в actual() и expected()
  124.     возвращаем тексты - ожидаемый и фактический
  125.  
  126.     если мы сравниваем размер - то соответственно - возвращаем размеры )
  127.  
  128.     если мы проверяем на что-то булевское - то да
  129.     true & is... )
  130. */
  131. *******************************
  132. public class Text extends ElementCondition {
  133. /*
  134.     можно отнаследоваться от ExactText
  135.     или наоборот - ExactText отнаследовать от Text
  136.     и в потомке - будет меньше кода)
  137. */
  138. }
  139. ************************************
  140. public class ListNthElementHasText extends CollectionCondition  {
  141.    ...
  142.  
  143.     @Override
  144.     public boolean check(List<WebElement> element) {
  145.     /*
  146.         List<WebElement> - это не элемент
  147.         это элементЫ
  148.  
  149.         поправь имя параметра
  150.     */
  151. ************************************
  152.             if (element != null) {
  153.                 isPresent = true;
  154.             } else {
  155.                 isPresent = false;
  156.             }
  157. /*
  158.     isPresent = (element != null)
  159.  
  160.     и все)
  161. */
  162. **************************************
  163. http://joxi.ru/p275M9zs0eRl9r
  164. /*
  165.     в этом пекедже сделай 2 пекеджа - element & collection
  166.  
  167.     и распредели кондишены и их предков - по соотвествкующим пекеджам
  168.     общее и классы-контейнеры статических методов для вызовов кондишенов -
  169.     оставь в корне пекеджа conditions
  170. */
  171. ********************************
  172.  public static <V> V until(Condition<V> condition, long timeout) {
  173.  ...
  174.  
  175.         throw new TimeoutException(String.format("Locator ['%s'] failed while waiting ['%s'] seconds to assert ['%s']"
  176.                 , locator.toString(), timeout / 1000, condition.toString()), lastError);
  177.     }
  178. /*
  179.     равняем сообщение
  180.  
  181.     failed while waiting ... seconds
  182.     to assert __condition__
  183.    
  184.     посмотри какой  toString у кондишена
  185.     там и про локатор, и про кондишен, и про результаты
  186.    
  187.     не забудб про переходы на новую строку - чтоб оно было поаккуратнее
  188. */
Advertisement
Add Comment
Please, Sign In to add comment