Всем привет!
Начал изучать автоматизацию в тестировании, и хочется с самого начала делать все правильно, поэтому изучил Page object model, и пока читал но не практиковал, то все было понятно, но когда начал писать код, то немного запутался.
Сейчас напишу как я это вижу с кусками кода.
1. Создаю класс MainPage в котором будут храниться локаторы с которыми я буду работать. Для примера создал myAccountButton и signUpButton.
2. Создаю конструктор для инициализации WebDriver и WebDriverWait.
3. Потом создаю методы.
Код ниже. Тут для меня все понятно. Разве что инициализация WebDriverWait. Для себя я решил, что добавлю ее в конструктор вместе с WebDriver.
И тут первый вопрос! Надо ли это делать - добавлять в конструктор? Или можно с ним (WebDriverWait) работать по другому. Блин..прочитал даже мне стало не совсем понятно, но надеюсь что Вы поймете.
public class MainPage { WebDriver driver; WebDriverWait howLong; By myAccountButton = By.xpath("//div[contains(@class,'col-md-6')]//li[@id='li_myaccount']/a"); By signUpButton = By.xpath("//li[@id='li_myaccount' and @class='open']//ul//child::li[2]/a"); public MainPage(WebDriver driver, WebDriverWait howLong){ this.driver = driver; this.howLong = howLong; } public void clickMyAccountButton(){ howLong.until(ExpectedConditions.elementToBeClickable(myAccountButton)); driver.findElement(myAccountButton).click(); } public void clickSignUpButton(){ howLong.until(ExpectedConditions.elementToBeClickable(signUpButton)); driver.findElement(signUpButton).click(); } }
Дальше:
Я создаю класс SignUp уже в другом пакете и тут пишу код для самого теста.
Вопрос №1. Я создал метод driverStart() с аннотацией @BeforeMethod и там я уже создаю обьект WebDriver driver, WebDriverWait howLong.
Это можно делать в этом методе? Или же дальше есть метод signUpTest() и эту инициализацию нужно делать в нем?
Вопрос №2. System.setProperty("webdriver.chrome.driver","E:\\chromedriver.exe"); можно прописать в pom.xml?
public class SignUp { WebDriver driver; WebDriverWait howLong; @BeforeMethod public void driverStart(){ System.setProperty("webdriver.chrome.driver","E:\\chromedriver.exe"); driver = new ChromeDriver(); howLong = new WebDriverWait(driver,30); driver.manage().window().maximize(); driver.get("https://www.phptravels.net/"); } @Test public void signUpTest(){ MainPage mp = new MainPage(driver,howLong); mp.clickMyAccountButton(); mp.clickSignUpButton(); } @AfterMethod public void quiteDriver(){ driver.quit(); } }
Вообщем объяснил немного не так как хотел. Просто сделайте замечания по коду. Хочется по крайней мере начать правильно. Заранее спасибо.