julia_v_iluhina

Untitled

Dec 28th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.37 KB | None | 0 0
  1. /*
  2.     решение насчет отдельной ветки - верное
  3.     будет лучше - если все 3 варианта останутся у тебя
  4. */
  5. ********************************
  6.  private WebDriver driver() {
  7.     return getWebDriver();
  8.  }
  9.  
  10.  public WebDriver getWebDriver() {
  11.     return driver();
  12.  }
  13. /*
  14.     посмотри на эти методы
  15.  
  16.     одим метод - вызывает второй
  17.     а второй - вызывает первый
  18.  
  19.     как думаешь, что получится, если вызвать любой из них?
  20.     http://ru.stackoverflow.com/questions/282099/%D0%98%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BD%D0%B5-%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%BD%D0%BE-%D0%BE%D1%82%D0%BA%D1%83%D0%B4%D0%B0-java
  21.     http://stackoverflow.com/questions/214741/what-is-a-stackoverflowerror
  22.  
  23.     в целом - рекурсия - прием хороший)
  24.     но им нужно с умом пользоваться
  25.     это нам в данном случае  - не нужно
  26.     но - если интересна тема - почитай
  27.     http://danzig.jct.ac.il/java_class/recursion.html
  28.     ну и сам погугли, конечно)
  29.     повторяю, тут это нам не пригодится
  30.  
  31.     тут нам нужно поле = переменная типа WebDriver и геттер + сеттер к нему
  32.     и в данном случае - это поле, как и геттер-сеттер - должны быть статические
  33.     т к мы со всеми сущностями класса ConciseAPI именно так работаем -
  34.  
  35.     создавать и удалять вебдрайвер - будем - как и ранее - в предке тест-класса
  36.     только поле для хранения тест-класса - будет находиться в ConciseAPI
  37.     и доступаться до него будем используя геттер
  38.     а иниуциализируем это поле - исполюзуя сеттер
  39.  
  40.     раз мы уже реализуем геттер и сеттер
  41.  
  42.         то
  43.             поле driver - объяви как private
  44.             реализуй не только WebDriver getDriver(), но и void setDriver(WebDriver driver)
  45.  
  46.             в void setDriver(WebDriver driver)
  47.             чтобы прописать значение в статическом поле класса - используй
  48.             обращение имя класса.имя поля
  49.             т е ConciseAPI.driver = driver
  50.  
  51.         почитай про это
  52.         https://dzone.com/articles/getter-setter-use-or-not-use
  53.         http://www.tutorialspoint.com/java/java_encapsulation.htm
  54.         http://stackoverflow.com/questions/2036970/how-do-getters-and-setters-work
  55.  
  56.  
  57.         получается - что ты к полю driver извне этого класса - будешь иметь доступ только через
  58.         геттер и сеттер, что хорошо и правильно
  59.  
  60.         в этой версии - все методы ConciseAPI - будут статическими
  61.         по сути - мы будем использовать эти статические методы и в пейджах
  62.         и в тестах
  63. */
  64. *************************
  65. public class BasePage extends ConciseAPI {
  66.  
  67.     public BasePage(WebDriver driver) {
  68.         this.driver = driver;
  69.     }
  70.  
  71.     public WebDriver driver;
  72.  
  73.  
  74.  
  75.     public WebDriver getWebDriver() {
  76.         return driver;
  77.     }
  78. }
  79. /*
  80.     наследования от ConciseAPI - нем теперь не нужно вообще
  81.     да и хранить в рамках пейджа вебдрайвер - теперь тоже не нужно
  82.     мы ведь можем вызвать статический метод getWebDriver() из ConciseAPI
  83.     и получить вебдрайвер
  84.     ну или любой другой метод из ConciseAPI
  85.  
  86.     отсюда первый вывод - предка пейджу теперь совсем не нужно
  87.     и второй вывод - пейджи можно снова сделать пейджами-модулями
  88.     что тоже позволит чуть упростить код
  89. */
  90. *****************************************
  91. public class BaseTest extends ConciseAPI {
  92. /*
  93.     и тут наследование - не нужно
  94. */
  95.     public static FirefoxDriver driver;
  96.     /*
  97.         это поле - будет жить в  ConciseAPI
  98.     */
  99.     @BeforeClass
  100.     public static void WebDriver() {
  101.         driver = new FirefoxDriver();
  102.         /*
  103.             тут - вызовешь сеттер
  104.             и как параметр - передашь новосозданный вебдрайвер
  105.         */
  106.     }
  107.  
  108.     @AfterClass
  109.     public static void closeBrowser() {
  110.         driver.quit();
  111.         /*
  112.             тут - с помощью геттера = получишь вебдрайвер
  113.             и ему вызовешь quit()
  114.         */
  115.     }
  116.  
  117.     @Override
  118.     public WebDriver getWebDriver() {
  119.         return driver;
  120.     }
  121.     /*
  122.         этот метод тебе не понадобится вообще
  123.     */
  124. }
Advertisement
Add Comment
Please, Sign In to add comment