Selenium WebDriver – это, фактически, стандарт для автоматизации Web UI. Отличный инструмент, но, как и все хорошее, зачастую используется неправильно. У меня много вопросов к использованию Selenium WebDriver, и сейчас вы узнаете об этом все!
Начал изучать автоматизацию в тестировании, и хочется с самого начала делать все правильно, поэтому изучил 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();
}
}
Вообщем объяснил немного не так как хотел. Просто сделайте замечания по коду. Хочется по крайней мере начать правильно. Заранее спасибо.