julia_v_iluhina

Untitled

Aug 28th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.07 KB | None | 0 0
  1. public class WaitFor {
  2.     ...
  3.     private Throwable lastError;
  4. /*
  5.     эта переменная нужна только внутри метода until
  6.     там ее объяви
  7.     на уровне объекта - она не нужна
  8. */
  9. ********************************
  10. public <V> V until(Condition<V> condition) throws WebDriverException {
  11. /*
  12.     тут тоже не нужен throws WebDriverException
  13. */
  14. *******************************
  15. http://joxi.ru/Vm6QqxphxMbkQr
  16. /*
  17.     со структурой пекеджа conditions поработаем
  18.     делаем тут пекедж element
  19.         и переносим туда - 1, 2 и 3 - то что относится к реализации работы конкретно с
  20.         кондишенами ElementCondition
  21.     делаем пекедж collections
  22.         и переносим туда - 4, 5, и 6
  23.  
  24.     остальное - останется в корне пекеджа conditions
  25.         это или общее
  26.         или классы контейнеры - 8 и 7 - их глубже прятать большого смысла нету
  27.  
  28.     дальше кондишенов будет прибавляться
  29.     и все они будут в пекеджах   conditions \  element или  conditions \  conditions
  30.  
  31.     будет легче ориентироваться
  32. */
  33. *********************************
  34. public abstract class AbstractCondition<V> implements Condition<V>{
  35.  
  36.  this.getClass().getName().substring(this.getClass().getName().lastIndexOf(".")+1)
  37.  /*
  38.     есть такой метод getSimpleName
  39.     http://www.tutorialspoint.com/java/lang/class_getsimplename.htm
  40.     http://stackoverflow.com/questions/15202997/what-is-the-difference-between-canonical-name-simple-name-and-class-name-in-jav
  41.  */
  42. ********************************
  43. return String.format(this.getClass().getName().substring(this.getClass().getName().lastIndexOf(".")+1) +
  44.                         "\nfor %s %s, found by: %s locator \nexpected %s to be %s,\n" +
  45.                 "actual %s is %s", elementOrElements(), elementsString(), locatorString(), resultDescription(),
  46.                     expectedResultString(), resultDescription(), actualResultString());
  47. /*
  48.     ну, ту попроще можно
  49.     ниже приведу пример - как попроще, уже с красивыми именами
  50.     а ты подумай и реализуй потробности)
  51. */
  52.  
  53.  return getClass().getSimpleName() +
  54.                 "\nfor " + identity() + " found by: " + locator +
  55.                 (expected() == "" ? "" : "\nexpected: " + expected()) +
  56.                 (actual() == "" ? "" : "\nactual: " + actual());
  57.  
  58. /*
  59.     identity() - это твой elementOrElements()
  60.  
  61.     locator - будет у тебя в этом классе, когда реализуешь 263-274 прошлого ревью
  62.     (можешь пока пропустить, потом вернуться)
  63.  
  64.     expected() и actual() - думаю, понятно и так
  65. */
  66. **********************************************
  67.  
  68. public class Visible extends ElementCondition {
  69.     private WebElement element;
  70.     private By locator;
  71.  
  72.     @Override
  73.     public WebElement apply(By locator) {
  74.         element = getWebDriver().findElement(locator);
  75.         return element.isDisplayed()?element:null;
  76.         /*
  77.             вспомни - как ты делала в ранее разработанных кондишенах
  78.             в apply - сначала сохраняла то, на основании чего выводы делала
  79.             и этим пользовалась - и принимая решение, и выводя фразу в  toString
  80.             тут - тоже самое
  81.             анализируемое состояние = element.isDisplayed()
  82.             вот тут и сохрани это в булевскую переменную
  83.             и далее - на основании ее значения - делай выводы и описывай фактический результат
  84.  
  85.             мы уже обсуждали - почему так лучше, тут не повторяюсь)
  86.         */
  87.     }
  88.  
  89.  ....
  90.     @Override
  91.     public String actualResultString() {
  92.         return String.valueOf(element.isDisplayed());
  93.     }
  94.     /*
  95.         не надо уже вебэлемент тут трогать
  96.         у тебя есть зафиксинованное состояние
  97.     */
  98. ******************************************************
  99.  
  100.     public String locatorString() {
  101.         return locator.toString().split(" ")[1];
  102.     }
  103. /*
  104.     не надо улучшать локатор)
  105.     это может путать)
  106.     просто - выводим локатор как есть
  107.     пока так
  108.     потом будет лучше
  109. */
  110. ********************************
  111. /*
  112.     в целом - в правильном направлении движешься
  113.     продолжай в том же духе)
  114. */
Advertisement
Add Comment
Please, Sign In to add comment