Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- на твое усмотрение
- можно сделать в этой версии и еще раз отдать на равью
- а можно дорабатывать это - в следующей версии
- закрепи эти задания - как отдельные branch в репозитории
- или вообще делай задания в разных репозиториях - если так удобнее
- возможно - захочешь потом взглянуть на каждое из вариантов решений
- также = в следующей версии уходи от использования @FindBy списков и элементов
- там где ты оперировал @FindBy прокси элементом или списком - оперируй локатором By
- получится не хуже и не сложнее )
- */
- *********************************
- public static ExpectedCondition<WebElement> nthProxyElementHasText(final List<WebElement> elements
- , final int index
- , final String expectedText) {
- ....
- public String toString() {
- return String.format("\nText of %s element:"
- + "\nExpected text should be: %s"
- + "\nActual text is: %s\n"
- , index
- , expectedText
- , actualText);
- }
- ...
- public static ExpectedCondition<List<WebElement>> texts(final List<WebElement> elements, final String... texts) {
- ...
- public String toString() {
- return String.format("\nTexts of list elements %s"
- + "\nshould contain: %s"
- + "\nwhile actual texts: %s\n"
- , elements.toString()
- , Arrays.toString(texts)
- , actualTexts);
- }
- /*
- оба кондишена - оперируют списком веб-элементов
- но в toString() одного кондишена - не выводишь elements, а в другом - выводишь
- тут лучше быть последовательным
- я бы выводила
- */
- *************************************
- public static ExpectedCondition<WebElement> nthProxyElementHasText(final List<WebElement> elements
- , final int index
- , final String expectedText) {
- return new ExpectedCondition<WebElement>() {
- public WebElement apply(WebDriver driver) {
- try {
- actualText = elements.get(index).getText();
- return actualText.contains(expectedText) ? elements.get(index) : null;
- /*
- сначала - получи веб-элемент
- у него - текст
- и при необходимости - вернешь ранее полученный веб-элемент
- мотивы те же что и раньше - на чем делали выводы - тем и оперируем
- */
- ***************************************************
- public static ExpectedCondition<List<WebElement>> texts(final List<WebElement> elements, final String... texts) {
- ...
- if (.....) {
- return null;
- } else {
- for (....) {
- if (...) {
- return null;
- }
- }
- return elements;
- }
- /*
- раз мы не стремились реализовать - используя единственный return
- то стоит упростить до
- */
- if (.....) {
- return null;
- }
- for (....) {
- if (...) {
- return null;
- }
- }
- return elements;
- /*
- по сути - та же логика
- но структура кода попроще
- мы так можем переписать - т к любой return = выход из метода
- */
- *************************************************************************
- public void assertEmail(int index, String subject) {
- assertThat(driver, ..., 10);
- }
- public void assertEmails(String... texts) {
- assertThat(driver, ...., 10);
- }
- /*
- я бы вызывала assertThat с двумя параметрами и на уровне тест-класса установила подходящий таймаут
- Configuration.timeout - ....
- причина - не только эти проверки для gmail тормозят
- но еще и все остальное
- посмотри на свою же селенидовскую версию этого задания - как там устанавливал Configuration.timeout
- тут - полная аналогия
- */
- ***************************************************
- https://docs.google.com/document/d/1BiYTLdypDfucSqiY9isv1HCKKQIxelzqYrN-3Ku1RWM/edit?usp=sharing
- /*
- примени это в своем решении для всех разработанных кондишенов
- если тебе будет проще - оперируй не типом Function<? super WebDriver, V> (это тип предка ExpectedCondition)
- а ExpectedCondition<V>
- поскольку кетчер бует применяться к потомкам ExpectedCondition - это будет ОК
- если захочешь поразбираться с дженериками
- про дженерики в общем(русский)
- http://www.quizful.net/post/java-generics-tutorial
- http://www.tutorialspoint.com/java/java_generics.htm
- http://developer.alexanderklimov.ru/android/java/generic.php
- конвеншенcы http://stackoverflow.com/questions/2900881/generic-type-parameter-naming-convention-for-java-with-multiple-chars
- https://docs.oracle.com/javase/tutorial/java/generics/types.html
- уроки
- http://docs.oracle.com/javase/tutorial/extra/generics/index.html
- очень приличный faq (есть pdf, и есть кое-что еще, помимо дженериков)
- http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html
- ----------------------------------------------------------
- для понимания кетчера (Catcher)
- http://grepcode.com/file/repo1.maven.org/maven2/com.google.guava/guava/r06/com/google/common/base/Function.java
- http://www.programcreek.com/java-api-examples/com.google.common.base.Function
- https://docs.oracle.com/javase/tutorial/java/generics/lowerBounded.html
- http://stackoverflow.com/questions/3847162/java-generics-super-keyword
- http://stackoverflow.com/questions/2800369/bounding-generics-with-super-keyword
- http://stackoverflow.com/questions/1910892/what-is-the-difference-between-super-and-extends-in-java-generics
- */
- *******************************************
Advertisement
Add Comment
Please, Sign In to add comment