QA Club N.Novgorod



Java + WebDriver + TestNG   Знакомство
с WebDriver
О себе:



Павел Попов
  2 года разработки автоматизированных тестов на
       Selenium/WebDriver
  Automation Test Lead в Exigen Services
  Один из преподавателей в
      ITCollege for Junior Testers (Exigen)
  Участник конференций: SQADays, SelenuimCamp
1   Что такое WebDriver?



                     Основы основ
WebDriver


    WebDriver пришел на замену Selenium RC, в 2010 году. Разработчики
WebDriver отказались от техники применения Server'а и перевода с
поддерживаемых машинных языков в JavaScript язык. Теперь WebDriver -
это вызов API функций браузера, и для каждого языка
программирования/каждого браузера описаны свои интерпретаторы.
2   Попробуем?



                 Посмотрим своими глазами
Вводный курс


Selenium IDE - легкий Firefox plugin
для создания тестов на языке
Selenium. Не требует знаний языков
программирования, имеет
дружелюбный интерфейс, позволяет
автоматизированно тестировать Web
страницы.




       http://seleniumhq.org/projects/ide/
Selenium IDE как начало пути к WebDriver
Настраиваем окружение


Eclipse: http://www.eclipse.org/downloads/




            JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html




  TestNG: http://beust.com/eclipse
Первый тест на WebDriver
Domain-Specific Language

        Предметно-ориентированный язык
       программирования (англ. domain-specific
  programming language, domain-specific language, DSL)
        — язык программирования, специально
   разработанный для решения определённого круга
     задач, в отличие от языков программирования
     общего назначения, таких, как Си, или языков
  моделирования общего назначения наподобие UML
                          и др.
Пример применения DSL


@Test
public void registerShouldBeUseLoginAndPassword(){
   openApplication();
   setLogin("User");
   setPassword("12345");
   clickOnRegistration();
   assertEquals("User", getLoginNameFromHeader());
}
Page Object & Page Elements

final public class PageLogin extends ElementsSet              /** Field IDs */

{                                                               static public final class FieldId

    /** Creates instance of accessor */                         {

    public PageLogin()                                               /** Hidden constructor */

    {                                                                private FieldId(){}

             setFieldAccessors(fieldAccessors);                      static public final String LOGIN = "Login";

             addActionAccessors(actionAccessors);                    static public final String PASSWORD = "Password";

    }                                                           }


                                                                /** Field accessors. Pairs "field ID - field accessor" */
    /**
                                                                static private final Map<String, Element> fieldAccessors;
      * Types user name and password and clicks appropriate
    button for submit                                            /** Action accessors. Pairs "action ID - action accessor"
                                                                */
        * @param user - user name
                                                                static private final Map<String, Element> actionAccessors;
        * @param password - password
                                                                static
        */
                                                                {
     public void submitCredentials(final String user, final
    String password)                                                 //[ Field accessors
    {                                                                fieldAccessors = new LinkedHashMap<String, Element>();
             changeValue(FieldId.LOGIN, user);
             changeValue(FieldId.PASSWORD, password);                String fieldId = FieldId.LOGIN;
             dispatchAction(ActionId.LOGIN);                         String fieldLocator = "id=loginForm:j_username";
         }                                                           fieldAccessors.put(fieldId, new
                                                                TextBox(fieldLocator));
Page Object & Page Elements


         TextBox                 Button               CheckBox


   •    type
                                                 •
   •    getValue            •   click
                                                 •
                                                      check
   •    focus               •   isEnabled
                                                 •
                                                      uncheck
   •    clear               •   doubleClick
                                                 •
                                                      isChecked
   •    isEditable          •   ...
                                                 •
                                                      click
   •    ...
                                                      ...




 Form                Menu          Table      Panel               ...
Refactoring
Вопросы
Не стесняемся задавать любые вопросы ;)




                                          Спасибо, что не спите :)

знакомство с Web driver

  • 1.
    QA Club N.Novgorod Java+ WebDriver + TestNG Знакомство с WebDriver
  • 2.
    О себе: Павел Попов 2 года разработки автоматизированных тестов на Selenium/WebDriver Automation Test Lead в Exigen Services Один из преподавателей в ITCollege for Junior Testers (Exigen) Участник конференций: SQADays, SelenuimCamp
  • 3.
    1 Что такое WebDriver? Основы основ
  • 4.
    WebDriver WebDriver пришел на замену Selenium RC, в 2010 году. Разработчики WebDriver отказались от техники применения Server'а и перевода с поддерживаемых машинных языков в JavaScript язык. Теперь WebDriver - это вызов API функций браузера, и для каждого языка программирования/каждого браузера описаны свои интерпретаторы.
  • 5.
    2 Попробуем? Посмотрим своими глазами
  • 6.
    Вводный курс Selenium IDE- легкий Firefox plugin для создания тестов на языке Selenium. Не требует знаний языков программирования, имеет дружелюбный интерфейс, позволяет автоматизированно тестировать Web страницы. http://seleniumhq.org/projects/ide/
  • 7.
    Selenium IDE какначало пути к WebDriver
  • 8.
    Настраиваем окружение Eclipse: http://www.eclipse.org/downloads/ JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html TestNG: http://beust.com/eclipse
  • 9.
  • 10.
    Domain-Specific Language Предметно-ориентированный язык программирования (англ. domain-specific programming language, domain-specific language, DSL) — язык программирования, специально разработанный для решения определённого круга задач, в отличие от языков программирования общего назначения, таких, как Си, или языков моделирования общего назначения наподобие UML и др.
  • 11.
    Пример применения DSL @Test publicvoid registerShouldBeUseLoginAndPassword(){ openApplication(); setLogin("User"); setPassword("12345"); clickOnRegistration(); assertEquals("User", getLoginNameFromHeader()); }
  • 12.
    Page Object &Page Elements final public class PageLogin extends ElementsSet /** Field IDs */ { static public final class FieldId /** Creates instance of accessor */ { public PageLogin() /** Hidden constructor */ { private FieldId(){} setFieldAccessors(fieldAccessors); static public final String LOGIN = "Login"; addActionAccessors(actionAccessors); static public final String PASSWORD = "Password"; } } /** Field accessors. Pairs "field ID - field accessor" */ /** static private final Map<String, Element> fieldAccessors; * Types user name and password and clicks appropriate button for submit /** Action accessors. Pairs "action ID - action accessor" */ * @param user - user name static private final Map<String, Element> actionAccessors; * @param password - password static */ { public void submitCredentials(final String user, final String password) //[ Field accessors { fieldAccessors = new LinkedHashMap<String, Element>(); changeValue(FieldId.LOGIN, user); changeValue(FieldId.PASSWORD, password); String fieldId = FieldId.LOGIN; dispatchAction(ActionId.LOGIN); String fieldLocator = "id=loginForm:j_username"; } fieldAccessors.put(fieldId, new TextBox(fieldLocator));
  • 13.
    Page Object &Page Elements TextBox Button CheckBox • type • • getValue • click • check • focus • isEnabled • uncheck • clear • doubleClick • isChecked • isEditable • ... • click • ... ... Form Menu Table Panel ...
  • 14.
  • 15.
    Вопросы Не стесняемся задаватьлюбые вопросы ;) Спасибо, что не спите :)