julia_v_iluhina

Untitled

Nov 23rd, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.40 KB | None | 0 0
  1.   private ExamplePage page = PageFactory.initElements(driver, ExamplePage.class);
  2. /*
  3.     а вот это ты напрасно)
  4.  
  5.     согласно задания -
  6.     ...
  7.     REMINDER: you don't need either PageObjects or PageModules in this task
  8.     read carefully hints for the original selenide version of this task - they will tell you the reason - why you don't need pages here...
  9.  
  10.     тут у нас есть цель - обойтись и без @FindBy элементов
  11.     да и название у класса пейджа ... непонятное)
  12. */
  13. ************************************
  14. new WebDriverWait(driver, 5)).until
  15. /*
  16.     можно объявить переменную wait и инициализировать ее значением new WebDriverWait(driver, 5))
  17.  
  18.     и в коде будет уже wait.until(...
  19. */
  20. *****************************
  21. assertTrue((new WebDriverWait(driver, 5)).until(sizeOf(page.elements, 10)));
  22.  
  23. ..
  24.     @FindBy(css = "#rso>.g>.rc, .srg>.g")
  25.     public List<WebElement> elements;
  26. ..
  27. public static ExpectedCondition<Boolean> sizeOf(final List<WebElement> elements, final int expectedSize) {
  28.  
  29. /*
  30.  
  31.     тут несколько вопросов)
  32.     от общего к частному)
  33.  
  34.     сначала  - структура проверки
  35.  
  36.     assertTrue( wait.until(...))
  37.         wait.until(...) - уже проверка
  38.         эта проверка - ждущая + тест упадет - если проверка не пройдет
  39.         этого уже достаточно
  40.  
  41.         assertTrue( wait.until(...)) - проверить результат проверки)
  42.         если мы дошли до этой строчки - значит  проверка wait.until(...) - уже прошла
  43.  
  44.         т е - wait.until(...) - достаточно
  45.  
  46.     выше писала - нам нужно обойтись без  @FindBy-элементов и пейджей
  47.     а значит - первый параметр кондишена  sizeOf - должен быть другого типа
  48.     если селениумский кондишен имеет параметр вебэлемент или список вебэлементов - то однозначно используется прокси вебэлемент/список
  49.     не прокси - технически передать можно, но толку от этого не будет - т к такие не переискиваются
  50.     твой выбор для кондишенов - первый параметр - локатор для списка - By elementsLocator
  51.     пример такого кондишена тоже есть в notes
  52.  
  53.     про @FindBy-элементы и списки - вот тут почитай
  54.     http://selenium2advanced.blogspot.com/2013/08/working-with-page-factory-and-webdriver.html
  55.     https://github.com/SeleniumHQ/selenium/wiki/PageFactory
  56.     но мы их тут не применяем
  57.  
  58. */
  59. **************************
  60. assertTrue((new WebDriverWait(driver, 5))
  61.                 .until(textInElements(page.elements, "Selenium automates browsers")));
  62. /*
  63.     и тут проверку в проверке делать не надо
  64.     и далее везде
  65.  
  66.     посмотрела на реализацию кондишена
  67.     у нас тут другая цель
  68.     мы должны проверить текст в первом элементе
  69.  
  70.     в принципе - если хочется - реализуй такой кондишен)
  71.     который для
  72.         локатора списка вебэлементов
  73.         индекса
  74.         текста
  75.     проверяет - что в текст такого-то элемента списка - входит нужный текст
  76.     а можно пока этого и не делать
  77.     а воcпользоваться советом из notes
  78.     http://joxi.ru/ZrJX8Y3f1Jn062
  79. */
  80. ***********************************
  81. page.elements.get(0).findElement(By.cssSelector("h3>a")).click();
  82. /*
  83.     конечно, реализация немного изменится - т к у нас не будет прокси-списка page.elements
  84.     но логика такая и должна остаться
  85.     получили список по локатору, у него - такой-то элемент, у него - вложенный элемент
  86.     тут все ок
  87.  
  88.     сразу задел на будущее задание - реализуй метод followLink(int index)
  89.     пусть в тест-классе и живет
  90. */
  91. ***************************
  92. assertTrue((new WebDriverWait(driver, 5))
  93.                 .until(ExpectedConditions.urlToBe("http://docs.seleniumhq.org/")));
  94. /*
  95.     верно выбрал кондишен
  96.     но назаворачивал лишнего)
  97. */
  98. *****************************
  99. public class ExpectedConditions {
  100. /*
  101.     расположил класс в структуре проекта - ок
  102.  
  103.     но вот название - не стоит его делать таким же, как у класса со стандартными селениумскими кондишенами
  104.  
  105.     лучше - CustomConditions
  106.  
  107.     в реализации колндишенов - не пренебрегай реализацией метода toString()
  108.  
  109.     в этом методе должно быть описано
  110.     что проверяли
  111.     для чего проверяли
  112.     что ожидали
  113.     что получили
  114.  
  115.      в notes есть пример
  116.  
  117.      почему метод toString() важен - понятно если разобрать реализацию метода WebDriverWait#until
  118.      кстати, эти знания тебе пригодятся
  119.      так что посмотри на него
  120.  
  121.      про sizeOf - да, верно, надо реализовать кондишен
  122.      т к нам надо бы потренироваться в этом
  123.  
  124.      есть и стандартный кондишен - который проверяет размер списка
  125.      но мы пока тренируемся)
  126.      смотри на то, что есть
  127.      https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html
  128. */
Advertisement
Add Comment
Please, Sign In to add comment