Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- решение насчет отдельной ветки - верное
- будет лучше - если все 3 варианта останутся у тебя
- */
- ********************************
- private WebDriver driver() {
- return getWebDriver();
- }
- public WebDriver getWebDriver() {
- return driver();
- }
- /*
- посмотри на эти методы
- одим метод - вызывает второй
- а второй - вызывает первый
- как думаешь, что получится, если вызвать любой из них?
- 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
- http://stackoverflow.com/questions/214741/what-is-a-stackoverflowerror
- в целом - рекурсия - прием хороший)
- но им нужно с умом пользоваться
- это нам в данном случае - не нужно
- но - если интересна тема - почитай
- http://danzig.jct.ac.il/java_class/recursion.html
- ну и сам погугли, конечно)
- повторяю, тут это нам не пригодится
- тут нам нужно поле = переменная типа WebDriver и геттер + сеттер к нему
- и в данном случае - это поле, как и геттер-сеттер - должны быть статические
- т к мы со всеми сущностями класса ConciseAPI именно так работаем -
- создавать и удалять вебдрайвер - будем - как и ранее - в предке тест-класса
- только поле для хранения тест-класса - будет находиться в ConciseAPI
- и доступаться до него будем используя геттер
- а иниуциализируем это поле - исполюзуя сеттер
- раз мы уже реализуем геттер и сеттер
- то
- поле driver - объяви как private
- реализуй не только WebDriver getDriver(), но и void setDriver(WebDriver driver)
- в void setDriver(WebDriver driver)
- чтобы прописать значение в статическом поле класса - используй
- обращение имя класса.имя поля
- т е ConciseAPI.driver = driver
- почитай про это
- https://dzone.com/articles/getter-setter-use-or-not-use
- http://www.tutorialspoint.com/java/java_encapsulation.htm
- http://stackoverflow.com/questions/2036970/how-do-getters-and-setters-work
- получается - что ты к полю driver извне этого класса - будешь иметь доступ только через
- геттер и сеттер, что хорошо и правильно
- в этой версии - все методы ConciseAPI - будут статическими
- по сути - мы будем использовать эти статические методы и в пейджах
- и в тестах
- */
- *************************
- public class BasePage extends ConciseAPI {
- public BasePage(WebDriver driver) {
- this.driver = driver;
- }
- public WebDriver driver;
- public WebDriver getWebDriver() {
- return driver;
- }
- }
- /*
- наследования от ConciseAPI - нем теперь не нужно вообще
- да и хранить в рамках пейджа вебдрайвер - теперь тоже не нужно
- мы ведь можем вызвать статический метод getWebDriver() из ConciseAPI
- и получить вебдрайвер
- ну или любой другой метод из ConciseAPI
- отсюда первый вывод - предка пейджу теперь совсем не нужно
- и второй вывод - пейджи можно снова сделать пейджами-модулями
- что тоже позволит чуть упростить код
- */
- *****************************************
- public class BaseTest extends ConciseAPI {
- /*
- и тут наследование - не нужно
- */
- public static FirefoxDriver driver;
- /*
- это поле - будет жить в ConciseAPI
- */
- @BeforeClass
- public static void WebDriver() {
- driver = new FirefoxDriver();
- /*
- тут - вызовешь сеттер
- и как параметр - передашь новосозданный вебдрайвер
- */
- }
- @AfterClass
- public static void closeBrowser() {
- driver.quit();
- /*
- тут - с помощью геттера = получишь вебдрайвер
- и ему вызовешь quit()
- */
- }
- @Override
- public WebDriver getWebDriver() {
- return driver;
- }
- /*
- этот метод тебе не понадобится вообще
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment