Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Жалобы на жизнь: Selenium WebDriver



Software-Testing.Ru - портал тестировщиков  

Новые темы форума тестировщиков


Жалобы на жизнь: Selenium WebDriver
2018-05-14 11:10

Автор: Энди Найт (Andy Knight)

 

Оригинал статьи: http://automationpanda.com/2017/12/03/the-airing-of-grievances-selenium-webdriver/

 

Перевод: Ольга Алифанова

 

Selenium WebDriver – это, фактически, стандарт для автоматизации Web UI. Отличный инструмент, но, как и все хорошее, зачастую используется неправильно. У меня много вопросов к использованию Selenium WebDriver, и сейчас вы узнаете об этом все!

 

Читать публикацию полностью



Page object model, Maven и еще пару вопросов
2018-05-14 11:42

Всем привет! 

 

Начал изучать автоматизацию в тестировании, и хочется с самого начала делать все правильно, поэтому изучил 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();
    }

}

Вообщем объяснил немного не так как хотел. Просто сделайте замечания по коду. Хочется по крайней мере начать правильно. Заранее спасибо.



© 2010 | Software-Testing.Ru


В избранное