julia_v_iluhina

Untitled

Oct 8th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.78 KB | None | 0 0
  1. public class BasePage {
  2.      public WebDriver driver;
  3.  
  4.      @FindBy(css = "[role='main'] .zA")
  5.      public List<WebElement> mails;
  6.  
  7.      public BasePage(WebDriver driver){
  8.          this.driver = driver;
  9.          PageFactory.initElements(driver, this);
  10.      }
  11.  }
  12. /*
  13.     все ок реализовал
  14.  
  15.     тут отметим для себя -
  16.         объявили  public поле для драйвера
  17.         и в конструкторе - его запомнили
  18.         это ок
  19.  
  20.     поле   mails - переноси в пейдж MailsPage
  21.  
  22.     поскольку после переноса mails в пейдж
  23.     этот класс - будет универсальным - перенеси предка пейджей
  24.     в пекедж core
  25. */
  26.  
  27. public class MailsPage extends BasePage{
  28. /*
  29.     смотрим дальше - пейджа отаследовали от предка
  30.     это значит - и тут нам доступны все поля и методы предка
  31.  
  32.     согласно их модификаторам доступа
  33.     https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
  34.     http://www.javatpoint.com/access-modifiers
  35.  
  36.  
  37.     public поле предка driver - доступно и тут, в потомке
  38. */
  39.     WebDriver driver;
  40.     /*
  41.         и нам не надо дополнительно и тут объявлять аналогичное поле
  42.  
  43.         фактически - тут объявив одноименное поле - мы перекрыли себе возможности использовать
  44.         поле driver из предка
  45.     */
  46.  
  47.     public MailsPage(WebDriver driver){
  48.         super(driver);
  49.     }
  50.     /*
  51.         тут мы поле предка - заполнили переданным значением вебдрайвера
  52.  
  53.         поле предка - т к используем код предка
  54.  
  55.         в результате - поле driver этого класса - остается не инициализированным
  56.         и далее - когда мы в этом пейдже обращаемся к driver - мы обращаемся к этому не инициализированному полю
  57.  
  58.         и получаем - Null Pointer Exception
  59.  
  60.         как решаем
  61.             убираем в пейджах поле driver
  62.             оставляем поле driver в предке пейджей
  63.         это касается всех пейджей
  64.     */
  65. ******************************
  66. public static ExpectedCondition<WebElement> nthElementHasText(final List<WebElement> elements , final int index, final String text) {
  67. /*
  68.     реализация - ок
  69. */
  70.             public String toString() {
  71.                 return String.format("\nExpected text: %s\n while actual text is: %s\n", text, actualText);
  72.             }
  73. /*
  74.     тут можно было бы быть  чуть точнее
  75.     expected text of list element by index ...: ...
  76.     while actual ....
  77.  
  78.     вывести индекс - стоит тоже
  79. */
  80. *********************************
  81.                 if (actualTexts.size() == expectedTexts.length){
  82.                     for(int i = 0; i < actualTexts.size(); i++ ) {
  83.                         if (!actualTexts.get(i).contains(expectedTexts[i])) {
  84.                             return null;
  85.                         }
  86.                     }
  87.                 } else {
  88.                     return null;
  89.                 }
  90.                 return elements;
  91. /*
  92.     технически - все ок
  93.     но этот кусочек можно переписать попроще
  94. */
  95.                 if (actualTexts.size() != expectedTexts.length){
  96.                     return null;
  97.                 }
  98.                 for(int i = 0; i < actualTexts.size(); i++ ) {
  99.                     if (!actualTexts.get(i).contains(expectedTexts[i])) {
  100.                         return null;
  101.                     }
  102.                 }
  103.                 return elements;
  104. **********************************************
  105. public String toString() {
  106.     return String.format("\nChecked that expected container: %s\n not equal to actual container: %s\n Containers not equal", actualTexts.toString(), Arrays.toString(expectedTexts));
  107. }
  108. /*
  109.     в toString() конишена стоит писать - что сравниваем, у чего сравниваем, что ждали, что получили
  110.  
  111.     Texts of list elements
  112.     should be : ...
  113.     while actual texts is: ...
  114.  
  115.     что-то такое
  116. */
  117. ***********************************
  118. /*
  119.     в целом версия - уже практически финальная
  120.     поправить осталось немного
  121. */
Advertisement
Add Comment
Please, Sign In to add comment