Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private ExamplePage page = PageFactory.initElements(driver, ExamplePage.class);
- /*
- а вот это ты напрасно)
- согласно задания -
- ...
- REMINDER: you don't need either PageObjects or PageModules in this task
- read carefully hints for the original selenide version of this task - they will tell you the reason - why you don't need pages here...
- тут у нас есть цель - обойтись и без @FindBy элементов
- да и название у класса пейджа ... непонятное)
- */
- ************************************
- new WebDriverWait(driver, 5)).until
- /*
- можно объявить переменную wait и инициализировать ее значением new WebDriverWait(driver, 5))
- и в коде будет уже wait.until(...
- */
- *****************************
- assertTrue((new WebDriverWait(driver, 5)).until(sizeOf(page.elements, 10)));
- ..
- @FindBy(css = "#rso>.g>.rc, .srg>.g")
- public List<WebElement> elements;
- ..
- public static ExpectedCondition<Boolean> sizeOf(final List<WebElement> elements, final int expectedSize) {
- /*
- тут несколько вопросов)
- от общего к частному)
- сначала - структура проверки
- assertTrue( wait.until(...))
- wait.until(...) - уже проверка
- эта проверка - ждущая + тест упадет - если проверка не пройдет
- этого уже достаточно
- assertTrue( wait.until(...)) - проверить результат проверки)
- если мы дошли до этой строчки - значит проверка wait.until(...) - уже прошла
- т е - wait.until(...) - достаточно
- выше писала - нам нужно обойтись без @FindBy-элементов и пейджей
- а значит - первый параметр кондишена sizeOf - должен быть другого типа
- если селениумский кондишен имеет параметр вебэлемент или список вебэлементов - то однозначно используется прокси вебэлемент/список
- не прокси - технически передать можно, но толку от этого не будет - т к такие не переискиваются
- твой выбор для кондишенов - первый параметр - локатор для списка - By elementsLocator
- пример такого кондишена тоже есть в notes
- про @FindBy-элементы и списки - вот тут почитай
- http://selenium2advanced.blogspot.com/2013/08/working-with-page-factory-and-webdriver.html
- https://github.com/SeleniumHQ/selenium/wiki/PageFactory
- но мы их тут не применяем
- */
- **************************
- assertTrue((new WebDriverWait(driver, 5))
- .until(textInElements(page.elements, "Selenium automates browsers")));
- /*
- и тут проверку в проверке делать не надо
- и далее везде
- посмотрела на реализацию кондишена
- у нас тут другая цель
- мы должны проверить текст в первом элементе
- в принципе - если хочется - реализуй такой кондишен)
- который для
- локатора списка вебэлементов
- индекса
- текста
- проверяет - что в текст такого-то элемента списка - входит нужный текст
- а можно пока этого и не делать
- а воcпользоваться советом из notes
- http://joxi.ru/ZrJX8Y3f1Jn062
- */
- ***********************************
- page.elements.get(0).findElement(By.cssSelector("h3>a")).click();
- /*
- конечно, реализация немного изменится - т к у нас не будет прокси-списка page.elements
- но логика такая и должна остаться
- получили список по локатору, у него - такой-то элемент, у него - вложенный элемент
- тут все ок
- сразу задел на будущее задание - реализуй метод followLink(int index)
- пусть в тест-классе и живет
- */
- ***************************
- assertTrue((new WebDriverWait(driver, 5))
- .until(ExpectedConditions.urlToBe("http://docs.seleniumhq.org/")));
- /*
- верно выбрал кондишен
- но назаворачивал лишнего)
- */
- *****************************
- public class ExpectedConditions {
- /*
- расположил класс в структуре проекта - ок
- но вот название - не стоит его делать таким же, как у класса со стандартными селениумскими кондишенами
- лучше - CustomConditions
- в реализации колндишенов - не пренебрегай реализацией метода toString()
- в этом методе должно быть описано
- что проверяли
- для чего проверяли
- что ожидали
- что получили
- в notes есть пример
- почему метод toString() важен - понятно если разобрать реализацию метода WebDriverWait#until
- кстати, эти знания тебе пригодятся
- так что посмотри на него
- про sizeOf - да, верно, надо реализовать кондишен
- т к нам надо бы потренироваться в этом
- есть и стандартный кондишен - который проверяет размер списка
- но мы пока тренируемся)
- смотри на то, что есть
- https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html
- */
Advertisement
Add Comment
Please, Sign In to add comment