julia_v_iluhina

Untitled

Oct 15th, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.97 KB | None | 0 0
  1. //fetchWrappedElement.toString - это мне совсем не нравится, что лучше вместо него?
  2.  
  3.     @Override
  4.     public WebElement getWrappedEntity() {
  5.             ...
  6.             throw new ElementNotFoundException(fetchWrappedElement.toString());
  7.             ...
  8. /*
  9.     тебе нужно описание не вебэлемента(он сейчас = нуллу, кстати)
  10.     тут нужно описание иенно лейзи-элемента
  11.     надо вызвать toString() этого же объекта = лейзи-элемента
  12.     (toString() = this.toString())
  13. */
  14. *********************************
  15. public class LazyCollectionFoundByConditionElement extends AbstractLazyElement {
  16.  
  17.     ...
  18.     @Override
  19.     public WebElement fetchWrappedEntity() {
  20.         for (LazyElement element : parentCollection) {
  21.             if (element.is(condition)) {
  22.                 return element.getWrappedEntity();
  23.             }
  24.         }
  25.         throw new ElementNotFoundException(String.valueOf(fetchWrappedEntity()));
  26.     }
  27.  
  28. /*
  29.  
  30.     посмотри на реализацию этого метода в LazyFilteredCollection
  31.     оно менее красиво - но реально - там меньше действий - разворачиваний-заворачиваний)
  32.  
  33.     используй не String.valueOf(fetchWrappedEntity()),
  34.     а как я уже выше писала - надо вызвать toString() этого же объекта = лейзи-элемента
  35.     (toString() = this.toString())
  36. */
  37. ***************************************************
  38. public class LazyCollectionNthElement extends AbstractLazyElement {
  39.  
  40. ....
  41.  
  42.     public WebElement fetchWrappedEntity() {
  43.         try {
  44.             return parentCollection.getWrappedEntity().get(index);
  45.         } catch (IndexOutOfBoundsException e) {
  46.             throw new LazyСollectionIndexOutOfBoundsException();
  47.         }
  48.     }
  49. /*
  50.     и тут передавай в LazyСollectionIndexOutOfBoundsException - toString() этого же объекта = лейзи-элемента
  51.     (toString() = this.toString())
  52. */
  53. *************************************************
  54.  public boolean is(Condition<WebElement> condition) {
  55.         try {
  56.             condition.apply(this);
  57.             return true;
  58.         } catch (WebDriverException e) {
  59.             return false;
  60.         }
  61.  }
  62. /*
  63.     вместо
  64.         condition.apply(this);
  65.         return true;
  66.     можно проще написать
  67.         return condition.check(getWrappedEntity());
  68.  
  69.     чуть короче
  70.     и чуть понятнее)
  71.  
  72. */
  73. ********************************************
  74. /*
  75.     раз сейчас не используешь параллельный запуск - убери или закомменть в pom
  76.     кусок, отвечающий за параллельный запуск
  77. */
  78. ***********************************************
  79. public class CssClass extends AbstractCondition<WebElement> {
  80. ...
  81.  
  82.     @Override
  83.     public boolean check(WebElement element) {
  84.         String[] classes = element.getAttribute("class").split(" ");
  85.         /*
  86.             советую вернуть в actual() - полное значение из element.getAttribute("class")
  87.             это будет полезнее
  88.  
  89.             подумай - что при текущем коде будет в actual()
  90.             если проверка не выполнится
  91.         */
  92.         for (String attribute : classes)
  93.             if (attribute.equals(cssClass)) {
  94.                 actualAttribute = attribute;
  95.                 return true;
  96.             }
  97.             /*
  98.                 и тут код упростится
  99.  
  100.                 не забывай реформатировать код
  101.                 и вот про это
  102.                 https://google.github.io/styleguide/javaguide.html#s4.1.1-braces-always-used
  103.             */
  104.         return false;
  105. **********************************************
  106. public interface LazyEntity <T> extends DescribesEntity {
  107.  
  108.     public T getWrappedEntity();
  109. }
  110. ....
  111. public interface DescribesResult {
  112.  
  113.     public String expected();
  114.  
  115.     public String actual();
  116. }
  117. ....
  118. /*
  119.     на уровне интерфейсов - модификаторы доступа не нужны
  120.     объявленное в интерфейсе
  121.     мы имплементируем в классе - как public
  122. */
  123. ***********************************************************
  124. public class LazyElementInnerCollection extends AbstractLazyCollection {
  125.     ...
  126.  
  127.     @Override
  128.     public List<WebElement> getWrappedEntity() {
  129.         innerCollection = parentElement.getWrappedEntity().findElements(innerLocator);
  130.         return innerCollection;
  131.     }
  132.     /*
  133.         можно без потерь в одну строчку переписать
  134.     */
  135. **************************************************
Advertisement
Add Comment
Please, Sign In to add comment