AT.info ПОСИДЕЛКИ  vKontakte   facebook группа  
.NET

WebDriver: Основные команды

В данной заметке я хочу привести описание и примеры основных (на мой взгляд) команд в Selenium 2.0 WebDriver для автоматизации функционального тестирования web-приложений. В данной заметке я рассказывал, что собой представляет WebDriver. А в данной заметке можно посмотреть пример простейшего тестового сценария на WebDriver и основную вводную информацию про данный инструмент автоматизированного тестирования. Примеры будут представлены на C# Driver, версия библиотек – 2.9.0.

Доступ к основным функциям WebDriver предоставляет одноименная сборка WebDriver. Интерфейс IWebDriver является базовым классом, его методы можно разделить на три категории: Control of the browser (OpenQA.Selenium.IWebElement) – методы для работы с элементами страницы, Key properties and methods (OpenQA.Selenium.IWebDriver.Url) – методы для навигации, установки параметров и т.д., и другие вспомогательные методы (например OpenQA.Selenium.ISearchContext.FindElement). Непосредственно за работу с элементами страницы отвечает интерфейс IWebElement. Так как в WebDriver каждый браузер имеет свой драйвер (список поддерживаемых драйверов), то для каждого драйвера предполагается наличие собственной реализации WebElement. Например, ChromeWebElement для Chrome, FirefoxWebElement для FF и т.д. То есть для каждого поддерживаемого браузера предусмотрен свой нативный интерфейс. Также в WebDriver есть HtmlUnitDriver – кроссплатформенный виртуальный браузер. Примерчики инициализации:

Объявляем драйвер:

IWebDriver driver = new DriverName();
     driver.<user hits space>

Поиск элемента:

IWebElement element = driver.findElement(By.id("some_id"));

В новой версии Selenium организован улучшенный механизм поиска элементов страницы. Перед обращением к элементу страницу необходимо сперва вызвать метод поиска с указанием типа локатора. Также есть метод для поиска группы элементов findElements (By by). В WebDriver доступна работа со следующими типами локаторов: id, name, xpath, tagName, className, cssSelector, linkText, partionalLinkText. Пример инициализации и поиска элемента с использованием разных типов локаторов:

IWebElement element;
     element = driver.FindElement(By.Id("LoginControl_LoginButton"));
     element = driver.FindElement(By.Name("LoginControl$LoginButton"));
     element = driver.FindElement(By.XPath("//tr/td[3]/input[@id='LoginControl_LoginButton']"));

Как и в Selenium 1.0, в Selenium WebDriver можно выделить три типа основных команд:

  • Действия - функциональное действие над элементами веб-страницы или браузером. Например, заполнение полей, нажатие на кнопку и другие;
  • Проверки - выполнение проверок на тестируемой странице. Например, проверка того, что определенное поле формы имеет указанное значение, или проверка заголовка окна и т.д.;
  • Ожидания - организация ожидания наступления определенных событий на странице или со страницей (например, ожидание загрузки страницы или ожидание загрузки ajax запросов, появление на странице определенного элемента и т.д.).

Команды навигации. За навигацию отвечает класс Navigate.

Немного о Selenium WebDriver

Selenium 2.0 – это инструмент автоматизации функционального тестирования, который включает в себя два ранее независимых проекта – Selenium Remote Control и WebDriver. В Selenium 2.0 можно использовать все прелести как Selenium WebDriver, так и Selenium RC (в режиме совместимости с WebDriver). Разработчики инструмента рекомендуют использовать Selenium WebDriver в тех местах, где не справляется Selenium RC, конечно, если нет других факторов, которые могут влиять на выбор инструмента автоматизации. При работе над Selenium 2.0 основная работа шла над Selenium WebDriver и режимом совместимости с Selenium RC. Сам Selenium RC особых изменений не претерпел, в основном фиксились старые баги, поэтому скорее всего придется переписывать некоторые тесты (убирать костыли и т.п.), если вы собираетесь использовать RC в режиме совместимости.

Главное отличие, которое разделяет WebDriver и Selenium RC, заключается в способе взаимодействия с браузером. Selenium RC посылает команды браузеру с помощью специального JavaScript ядра Selenium Core. Данный подход позволяет обеспечивать кроссбраузерность (Selenium 1.0 может с относительной легкостью работать с разными браузерами). В этой заметке я описывал инструменты тестирования семейства Selenium. WebDriver, в отличие от Selenium RC “общается” с браузером через нативный интерфейс. Для каждого браузера свой нативный интерфейс, это и накладывает определенные сложности с поддержкой разных браузеров в WebDriver. Зато, предоставляет ряд преимуществ, таких как скорость работы, действия пользователя эмулируется максимально точно (например, тесты на WebDriver не видят скрытые элементы интерфейса). То есть, в Selenium 2.0 фактически объединены все достоинства (и недостатки тоже) перечисленных ранее инструментов.

Архитектуру Selenium RC можно представить следующим образом: Авто тесты -> Selenium RC Server -> Браузер -> Тестируемое приложение. Как работает Selenium RC:

В архитектуре Selenium WebDriver отсутствует “прослойка” Selenium RC Server. Зато добавляется слой Driver, который и отвечает за взаимодействие с браузером. Вот так устроен Selenium WebDriver:

Главное достоинство Selenium WebDriver заключается в том, что он использует драйверы, адаптированные под конкретный браузер, то есть Selenium WebDriver работает с каждым браузером по “индивидуальной программе”. Это повышает стабильность работы тестов (так как они затачиваются под конкретный браузер), тесты становится проще писать и поддерживать, увеличивается скорость их работы. Selenium WebDriver использует нативные команды (старается полностью эмитировать действия пользователя), что является важным преимуществом перед Selenium RC.

На данный момент существуют следующие драйверы:

Разбор и критика примера использования Selenium Webdriver + NUnit + C#

Вот вы, значит, сидите себе спокойно, кофе попиваете, на кнопочки кликаете, и тут к вам залетает ваш взмыленный руководить проекта/начальник/тим лид или генеральный директор и говорит:

Нам нужна автоматизация тестирования,
а то без нее никак, все развалится,
а будет – дадим тебе синьйора с бонусами!

Ну, значит, сидите вы после этого замотивированный то ли негативно, то ли позитивно, в общем – неважно, но важно то, что "работу-то нужно работать". Оглянулись вы по сторонам, а вокруг на проекте – Дикий Запад, в кого не плюнь, все на C# и .NET пишут. Да, и вы вспомнили, что когда-то то ли на C#, то ли на ASP.NET что-то делали. И совсем недавно какой-то слух прошел, что вышел Selenium Webdriver 2, который, говорят, лучше первой версии и все на нем, значит, автоматизацию и готовят. 

 Тут вы забиваете в Гуугл заклинание: selenium webdriver c# tutorial

Google поиск по словам selenium webdriver c# tutorial 

И получаете страницу вполне релевантных результатов, надеясь найти там хорошие примеры по автоматизации. Вот самая первая ссылка вполне подходит:  Selenium Two Tutorial using C#/NUnit and InternetExplorerDriver

В этой статье я хотел бы показать, как подключить Selenium  и написать первый тест. Все бы было хорошо, но! Обратите внимание на то, что пример этот показывает, как Селениум подключить и гугл автоматизировать, но этот пример не показывает, как правильно нужно тесты писать. Давайте рассмотрим этот пример теста более детально:

Тестирование Web приложений на .NET с Cuke4Nuke и WatiN

Senior QA Automation Engineer

Responsibilities:

  • Performing daily activities as a QA Test automation engineer on FMM team
  • Ensuring the quality of automated test coverage for new applications / features developed by FMM dev team
  • Maintaining test result records and registering defects in a bug management system used on the project
  • Developing scripts, automation testing scenarios, and utilities to facilitate various automation testing needs on the project
  • Creating test reports
  • Analyzing Test results 

The candidate must have the following mandatory skills:

  • Automation experience on large distributed systems. Including rich client (not pure web based applications) and non UI testing, e.g. feeds, processes etc.
  • Knowledge and practical experience of all test stages and types (unit, component, system, integration, functional, reliability, availability, volume, performance, and business acceptance).
  • Experience using Quality Centre
  • Linux (including commands such as grep, sort, uniq, diff)
  • SQL (queries, table joins, group by etc)
  • Strong VBScript and/or VBA expertise
  • Advanced Quick Test Pro experience (including descriptive programming and VBS)
  • Scripting e.g. perl
  • Advanced Excel features, e.g. VLOOKUP etc

As a plus:

  • Manual testing experience on large distributed systems. Including rich client (not pure web based applications) and non UI testing, e.g. feeds, processes etc.
  • Jira experience
  • .Net/c# and SQL server reporting services skills (advantageous)

Company offers:

  • An exciting and challenging job in a dynamic team
  • An opportunity to be innovative and to learn
  • High salary and attractive compensation package
Компания: 
Luxoft
Город: 
Киев (Kiev)
Страна: 
Украина
Инструменты: 
QTP, SQL, Linux
Ориентировочная зарплата: 
2,500-2,700 USD в месяц
Контакт: 
Репешко Елена- рекрутер, erepeshko@luxoft.com, ICQ#: 410-196-214, Skype: isovna

C# Developer for test

Initto (http://www.initto.com/) is a Danish company that provides customized IT services and consulting to clients worldwide. If you are looking for exciting challenges, top achievements and vast opportunities in an international working environment this position is for you. 

Requirements:

  • Understanding the principles of testing and product life cycle
  • NET/C#.net coding background
  • Write test scripts in C#
  • Understanding of interfaces and OOPS concepts
  • Visual Studio Team System for Testers (including TFS)
  • Upper-intermediate English

We offer:

  • Opportunities for creativity and self- establishment
  • A strong team spirit with social activities, regular corporative events, and good teamwork
  • «White» salary
  • Low hierarchy, open door policy, open communication
  • Long-term employer-employee partnership
  • Official work
  • Paid vacation of 24 calendar days per year
  • Health insurance
  • Free car parking space
  • English with native speaker
Компания: 
Initto
Город: 
Киев (Kiev)
Страна: 
Украина
Инструменты: 
Visual Studio
Ориентировочная зарплата: 
2,000-2,500 USD в месяц
Контакт: 
Рhone: +380 50 208 3116 or Skype: nataliya_hr

Senior Tester

International company is looking for Senior Tester to expand its team in Kiev office.

REQUIREMENTS:

  • High Technical Degree;
  • More than 3 years of experience in automated testing;
  • Experience in .NET\C# development;
  • Experience writing test scripts in C#;
  • Experience in test reporting, test design;
  • Experience in VSTS, TFS;
  • Good speaking and writing English. 

COMPANY OFFERS:

  • Official employment;
  • High salary;
  • Medical insurance;
  • English classes with native speaker;
  • Excellent career opportunities.
Компания: 
IT Recruitment Solutions
Город: 
Киев (Kiev)
Страна: 
Украина
Инструменты: 
SilkTest, QTP, TestComplete, Visual Studio
Ориентировочная зарплата: 
1,500-2,600 USD в месяц
Контакт: 
Please, send your CV marked «Senior Tester» in the subject via e-mail: resume@itrs.com.ua, Tel.: +38 (044) 228-7618

Watir

Поставщик: 
Bret Pettichord, Paul Rogers
Распространение: 
Open Source
Цена: 
Free

Watir

Watir (с англ. Web Application Testing in Ruby), произносится как water. Относится к open-source Ruby библиотекам  для автоматизации тестирования web приложений. Позволяет писать легко читаемые и поддерживаемые тесты. Доступен через менеджер пакетов Ruby Gem.

Функциональные особенности

Ruby поддерживает OLE(англ. Object Linking and Embedding), что дает возможность автоматизации работы браузера Microsoft Internet Explorer. В отличие от инструментов тестирования, основанных на протоколе HTTP, которые симулируют запросы браузера, Watir симулирует работу пользователя с браузером с помощью протокола OLE, который создан на основе архитектуры COM(англ. Component Object Model). Технически, процесс IE — это сервер, который управляет объектами автоматизации, а программа Ruby становится клиентом, который манипулирует этими объектами. Дает использовать все возможности языка программирования: подключение к базе, считывание данных с xls таблиц, xml файлов, структурировать код в библиотеки и т.д.

Поддержка браузеров

  • Internet Explorer (Watir): Microsoft Windows.
  • Firefox (FireWatir): Microsoft Windows, Linux, Mac OS.
  • Google Chrome (ChromeWatir): Microsoft Windows.
  • Safari (SafariWatir): Mac OS.

Watir API-подобные инструменты

  • WatiN - инструмент реализован на .NET
  • Watij - инструмент реализован на Java
  • Win32-Watir - инструмент реализован на Perl

Поддерживаемые технологии: 
HTML, JavaScript
Поддерживаемые ОС: 
Microsoft Windows, Linux, Mac OS
Язык тестов: 
Ruby, Java, .NET, Perl
Тестируемые приложения: 
веб приложения
RSS-материал