Upload
igor-pozumentov
View
2.888
Download
5
Embed Size (px)
DESCRIPTION
Citation preview
QA Club N.Novgorod
Java + WebDriver + TestNGЗнакомство с WebDriver
О себе:
Павел Попов2 года разработки автоматизированных тестов на
Selenium/WebDriver
Automation Test Lead в Exigen Services
Один из преподавателей в
ITCollege for Junior Testers (Exigen)
Участник конференций: SQADays, SelenuimCamp
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
@Testpublic void registerShouldBeUseLoginAndPassword(){
openApplication();setLogin("User");setPassword("12345");clickOnRegistration();assertEquals("User", getLoginNameFromHeader());
}
Page Object & Page Elements
final public class PageLogin extends ElementsSet
{
/** Creates instance of accessor */
public PageLogin()
{
setFieldAccessors(fieldAccessors);
addActionAccessors(actionAccessors);
}
/**
* Types user name and password and clicks appropriate button for submit
* @param user - user name
* @param password - password
*/
public void submitCredentials(final String user, final String password)
{
changeValue(FieldId.LOGIN, user);
changeValue(FieldId.PASSWORD, password);
dispatchAction(ActionId.LOGIN);
}
/** Field IDs */
static public final class FieldId
{
/** Hidden constructor */
private FieldId(){}
static public final String LOGIN = "Login";
static public final String PASSWORD = "Password";
}
/** Field accessors. Pairs "field ID - field accessor" */
static private final Map<String, Element> fieldAccessors;
/** Action accessors. Pairs "action ID - action accessor" */
static private final Map<String, Element> actionAccessors;
static
{
//[ Field accessors
fieldAccessors = new LinkedHashMap<String, Element>();
String fieldId = FieldId.LOGIN;
String fieldLocator = "id=loginForm:j_username";
fieldAccessors.put(fieldId, new TextBox(fieldLocator));
МНОГО
БУКАФ
Page Object & Page Elements
• type• getValue• focus• clear• isEditable• ...
TextBox
• click• isEnabled• doubleClick• ...
Button
• check• uncheck• isChecked• click• ...
CheckBox
Form Menu Table Panel ...
Refactoring
Не стесняемся задавать любые вопросы ;)
Вопросы
Спасибо, что не спите :)