julia_v_iluhina

Untitled

Oct 5th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.01 KB | None | 0 0
  1. public static ExpectedCondition<List<WebElement>> texts(final List<WebElement> elements , final String... expectedTexts) {
  2. /*
  3.     вот эти лейзи прокси веб-элементы - они не такие простые)
  4.     они могут меняться)
  5.  
  6.     ты обратился к elements в начале метода - у тебя одна картинка
  7.     а ниже обратился - список уже поменялся
  8.  
  9.     https://github.com/SeleniumHQ/selenium/wiki/PageFactory
  10.     http://selenium2advanced.blogspot.com/2013/08/working-with-page-factory-and-webdriver.html
  11.  
  12.     это придется учесть в коде кондишена)
  13.  
  14. */
  15.       return new ExpectedCondition<List<WebElement>>() {
  16.            private String[] copyElements = new String[elements.size()];
  17.            /*
  18.                 это мы выполняем единожды - когда вызываем этот кондишен texts(...)
  19.                 в assertThat(texts(...))
  20.  
  21.                 а потом будем многократно(в new WebDriverWait(...).until(...))
  22.                 вызывать apply - до тех пор пока таймаут не закончится или кондишен не выполнится
  23.  
  24.                 и для всех этих раз - у нас будет  copyElements того размера, который мы запомнили на старте
  25.                 хотя размер списка мог уже измениться
  26.  
  27.                 проще тут объявить List<String>
  28.                 и не инициализировать его
  29.  
  30.                 и советую назвать этот список actualTexts - точнее отражает суть
  31.            */
  32.  
  33.            public List<WebElement> apply(WebDriver driver) {
  34.                if (elements.size() == expectedTexts.length){
  35.                    for(int i = 0; i < elements.size(); i++ ){
  36.                        copyElements[i] = elements.get(i).toString();
  37.                    }
  38.                } else {
  39.                    return null;
  40.                }
  41.                /*
  42.                     нам в любом случае надо бы собрать actualTexts
  43.                     даже если размеры не равны
  44.  
  45.                     ведь в toString нам интересно увидеть actualTexts
  46.  
  47.                     поэтому - инициализируй список
  48.                     и в цикле - при обходе списка elements
  49.                     наполняй actualTexts
  50.  
  51.                     в любом случае
  52.  
  53.                     а далее
  54.                     сравни размер actualTexts и expectedTexts
  55.                     и если они не равны - возвращай нулл
  56.                     тогда и в toString будет что рассказать )
  57.                    
  58.                     и что важнее - дальше в сравнениях описраемся на собранный список actualTexts
  59.                     потому что если снова просить что-то у elements - нам снова могут быть выданы обновленные данные)
  60.                    
  61.                     а наш apply - должен проверить состояние списка в некий фиксированный момент
  62.                     потому - сначала - фиксируем момент = собираем actualTexts
  63.                     а потом - анализируем полученное
  64.                */
  65.                for(int i = 0; i < copyElements.length; i++ ){
  66.                    if(!copyElements[i].equals(expectedTexts[i])){
  67.                    /*
  68.                         этот цикл - в целом верный
  69.                         единственное - для сравнения применяй
  70.                         не equals
  71.                         а contains
  72.                         вспомни - для чего мы пишем кондишен и какую проверку нам нужно
  73.                    */
  74.                        return null;
  75.                    }
  76.                }
  77.                return elements;
  78.            }
  79.  
  80.            public String toString() {
  81.                return String.format("\nExpected texts: %s\n while actual texts is: %s\n",  expectedTexts[0],copyElements[0]);
  82.                /*
  83.                     подсмотри в https://docs.google.com/document/d/1W_oZ2UkBvDJes5bBoMm4eAhgyJIaQXEvyGJUeq-pfao/edit#bookmark=id.anbgqa4uaym5
  84.                     как мы формируем сообщение
  85.                     мы пишем - что проверяли + для какой сущности проверяли + ожидания + факт
  86.                     и ты так построй фразу
  87.                */
  88.            }
  89.        };
  90.    }
Advertisement
Add Comment
Please, Sign In to add comment