julia_v_iluhina

Untitled

Sep 28th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.80 KB | None | 0 0
  1. Есть подозрение, что я намудрила с toString(), может сделала не совсем так, как ты писала. У меня сейчас вот так выглядит ошибка:
  2.  
  3. ***********
  4. org.openqa.selenium.TimeoutException: Timed out after 4 seconds waiting for SizeOf
  5. for WebElements from By.cssSelector: .srg>.g
  6. expected: 10
  7. actual: 0
  8. …….
  9.  
  10. **************
  11. org.openqa.selenium.TimeoutException: Timed out after 4 seconds waiting for Text
  12. for WebElement from parentCollection[0] = [[FirefoxDriver: firefox on WINDOWS (3421be5a-bbfc-4701-912f-fe420d771fea)] -> css selector: .srg>.g]
  13. expected: Selenium automates browsers111
  14. actual: Selenium - Web Browser Automation
  15. www.seleniumhq.org/
  16. ……..
  17.  
  18. /*
  19.     давай разбираться )
  20.  
  21.     начало фразы - формируется в WaitFor#until
  22. */
  23. public class WaitFor {
  24.   ...
  25.     public <V> V until(Condition<V> condition, long timeoutMs) {
  26.        ...
  27.  
  28.         throw new TimeoutException(String.format("Timed out after %s seconds waiting for %s", Long.toString(timeoutMs/1000), condition.toString()), lastError);
  29.     }
  30.  
  31. /*
  32.     в принципе - вот этот первый кусочек - Timed out after 4 seconds waiting for  - вопросов и не вызывает ....
  33.  
  34.     можно чуть переформулировать  - failed while waiting ... seconds to assert ...
  35.  
  36.     дальше - надо смотреть на реализацию condition.toString()
  37.  
  38.     смотрим ...
  39.     сначала - на общего абстрактного предка всех кондишенов
  40. */
  41. public abstract class AbstractCondition<T> implements Condition<T>, DescribesResult{
  42.  
  43.  ...
  44.     public String toString() {
  45.             return String.format(getClass().getSimpleName() +
  46.                     "\nfor " + identity() + " from " + entity +
  47.                     (expected() == "" ? "" : "\nexpected: " + expected()) +
  48.                     (actual() == "" ? "" : "\nactual: " + actual()));
  49.     }
  50.  
  51. }
  52. /*
  53.     вместо " from " + entity +
  54.     можно " found by: " + entity
  55.     будет чуть лучше
  56.  
  57.     идем по иерархии дальше - смотрим на следующих потомков
  58.  
  59.     кстати, а когда expected() или actual() возвращают "" ? ""?
  60.     надо ли такой вариант предусматривать вообще?
  61. */
  62.  
  63. public abstract class AbstractElementCondition
  64. /*
  65.     фактически - мы тут только тип уточнили - что это потомки AbstractCondition<WebElement>
  66.     ну и уже по мелочи - реализовали тут  identity()
  67. */
  68.     ...
  69.  
  70.     @Override
  71.     public String identity() {
  72.         return "WebElement";
  73.     }
  74.     /*
  75.         корректнее - element
  76.     */
  77.  
  78. /*
  79.     смотрим на второго потомка ...
  80. */
  81. public abstract class AbstractCollectionCondition ...
  82. ...
  83.  
  84.     @Override
  85.     public String identity() {
  86.         return "WebElements";
  87.     }
  88.     /*
  89.         тут  - верни collection или  elements
  90.  
  91.         collection - даже лучше - быстрее разницу увидеть можно
  92.         element vs elements
  93.         element va collection - в этом варианте нагляднее
  94.     */
  95. /*
  96.     дальше - смотреть надо на реализации expected() & actual() в кондишенах
  97.     (тут меня ничего не смутило - все корректно)
  98.  
  99.     и на toString лейзи-сущностей
  100. */
  101.  
  102. /*
  103.     думаю - после этих изменений вопрос решится
  104.  
  105.     во всех лейзи-объектах - должен быть реализован метод toString()
  106.     также как и кондишенах - expected() & actual()
  107. */
  108. *********************************************
  109. Когда я в интерфейсе объявляю метод , например find(),
  110. а потом его имплементирую в классе, который имплементирует этот интерфейс надо указывать аннотацию
  111. @Override или нет? Пробовала проверить с помощью идеи, используя Alt+Insert,
  112. но идея сама добавляет эту аннотацию.
  113. А мне кажется, что она не нужна, ведь это не другая какая-то отличная реализация этого метода,
  114. а его первая реализация. Больше ни в каком классе ее нет.
  115.  
  116. /*
  117.     технически - ты вообще можешь эту аннотацию не использовать
  118.  
  119.     но - согласно конвеншенсов она нужна
  120.     https://google.github.io/styleguide/javaguide.html#s6.1-override-annotation
  121.  
  122.     http://stackoverflow.com/questions/212614/should-we-override-an-interfaces-method-implementation
  123.     http://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why
  124.  
  125.     по второй линке тоже похожие вопросы рассматриваются)
  126.     и народ про них спорит - есть и pro, и contra )
  127.  
  128.     но вот у гугла в конвеншенсах - указано использовать
  129. */
  130. ****************************
  131. public class LazyElementInsideElement extends AbstractLazyElement {
  132. /*
  133.     назови класс LazyElementInnerElement
  134.  
  135.     схема = Lazy + откуда + уточнение + Element
  136.  
  137.     в toString - выведи что-то типа parentElement.toString() + " find(" + innerLocator + ")";
  138.  
  139.     остальная реализация - ок
  140. */
Advertisement
Add Comment
Please, Sign In to add comment