julia_v_iluhina

Untitled

Sep 22nd, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.59 KB | None | 0 0
  1.  public <X> X getScreenshotAs(OutputType<X> target) throws WebDriverException {
  2.         return getWrappedEntity().getScreenshotAs(target);
  3.  }
  4. /*
  5.     тут тоже жди видимости
  6. */
  7. ********************
  8.  @Override
  9.     public LazyElement pressEnter() {
  10.         waitFor(this).until(visible());
  11.         getWrappedEntity().sendKeys(Keys.ENTER);
  12.         return this;
  13.     }
  14.  
  15.     @Override
  16.     public LazyElement pressEscape() {
  17.         waitFor(this).until(visible());
  18.         getWrappedEntity().sendKeys(Keys.ESCAPE);
  19.         return this;
  20.     }
  21. /*
  22.     тут, кстати, проще переиспользовать this.sendKeys()
  23.  
  24.     в нем же уже все есть)
  25.  
  26.     экономия на спичках, конечно
  27.     но все же)
  28. */
  29. *********************************
  30. public abstract class AbstractLazyCollection implements LazyCollection {
  31. /*
  32.     набор и сигнатура методов - ок
  33.  
  34.     тут тоже надо @Override использовать
  35. */
  36. *****************************
  37.     public LazyElement get(int index) {
  38.         waitFor(this).until(minimumSizeOf(index + 1));
  39.         return new LazyWrappedWebElement(getWrappedEntity().get(index));
  40.     }
  41. /*
  42.     не)
  43.     мы тут хитрее поступим)
  44.     во-первых - не будем ничего ждать)
  45.  
  46.     во-вторых - создадим еще один класс - LazyCollectionNthElement - нн-ый элемент коллекции
  47.     конструктор которого принимает родительскую лейзи-коллекцию и индекс элемента
  48.     и это - используй в реализации getWrappedEntity() этого нового класса
  49.         у родительской лейзи-коллекции - тоже можно вызвать getWrappedEntity()
  50.         получим - список вебэлементов
  51.         и у него - по индексу - получим искомый вебэлемент
  52.     в результате - как и ранее - оперировать вебэлементами (или списками вебэлементов)
  53.     мы насинаем не раньше работы с  getWrappedEntity()
  54.     а до этого - просто запоминаем - как что искать
  55.  
  56.     не забудь про toString() для нового класса
  57.     он должен отразить и информацию о родительской коллекции, и информацию о индексе
  58.     постарайся формулировать полаконичнее
  59.     конечно - не в ущерб точности
  60.  
  61.     и в методе get - создай новый объект класса LazyCollectionNthElement
  62.     и на этом все)
  63.  
  64.     про то, почему не нужно ничего ждать в  get
  65.         в get - мы просто создалим новый элемент лейзи-семейства = рассказ, как искать то, что нам нужно
  66.         а когда дело дойдет до работы с реальными вебэлементами/списками вебэлементов - мы вызываем некую
  67.         ждущую проверку
  68.         в которой для нашего элемента будет вызван getWrappedEntity()
  69.         который в свою очередь - получит вебэлемент (может - и путем вызова getWrappedEntity() родительской сущности)
  70.         все эти действия - у нас выполняются в try-catch
  71.         потому - даже если индекс выйдет за границы - мы все это поймаем и еще подождем
  72.         и только если нам таймаута не хватит - тест упадет
  73.         и расскажет - почему
  74. */
  75. *********************************************************
  76.     public Iterator<LazyElement> iterator() {
  77.         ...
  78.         List<WebElement> collection = getWrappedEntity();
  79.         /*
  80.             я бы назвала этот список - elements
  81.             но то уже личные предпочтения)
  82.         */
  83. /*
  84.     по реализации - все ок
  85.  
  86.     единственное - я бы для LazyWrappedWebElement - передавала не только вебэлемент
  87.     но и родительскую сущность
  88.     т к  - это важная информация о полученном вебэлементе
  89.  
  90.     причем стоит реализовать тип родительской сущности - LazyEntity
  91.     чтобы можно было такой обернутый элемент делать как из лейзи коллекции, так и из лейзи элемента
  92.  
  93.     сам LazyWrappedWebElement - ок реализован
  94. */
  95. **********************************
  96. public class Mails {
  97.     static String mails = "[role = 'main'] .zA";
  98. /*
  99.     сразу делай лейзи-коллекцию - $$("[role = 'main'] .zA")
  100.     и дальше ей оперируй
  101.  
  102.     код получится лаконичнее
  103.     и наши лейзи-сущности так позволяют делать)
  104. */
  105. ...
  106.     public static void assertMail(int index, String text) {
  107. //        assertThat(mails, listNthElementHasText(index, text));
  108.       //  $$(mails).get(index).should(ElementConditions.text(text));
  109.     }
  110. /*
  111.     да)
  112.     именно второй вариант строки - то что тебе надо
  113.  
  114.     применяй импорт статик для ElementConditions.text
  115. */
  116. ********************************************
  117. /*
  118.     про  Inner element search - как доделаешь get - еще раз взгляни на вводную информацию и это ревью
  119.  
  120.     все идеи - уже есть)
  121. */
  122. ******************************************
  123. public class Configuration {
  124.  
  125. /*
  126.     прокомментируй значения
  127.    
  128.     да и для pollingInterval - я бы рекомендовала выбрать шаг помельче
  129.     500 миллисекунд - многовато
  130. */
  131.  
  132. public class Configuration {
  133.     //default interval for WaitFor.Until - smart waiting check one condition, in milliseconds
  134.     public static int timeout = 4000;
  135.     //interval between checks inside WaitFor.Until, in milliseconds
  136.     public static int pollingInterval = 100;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment