Основные понятия и методы Selenium Webdriver API
Основными понятиями в Selenium Webdriver являются:
- Webdriver - самая важная сущность, отвественная за управление браузером. Основной ход скрипта/теста строится именно вокруг экземпляра этой сущности.
- Webelement - вторая важная сущность, представляющая собой абстракцию над веб элементом (кнопки, ссылки, инпута и др.). Webelement инкапсулирует методы для взаимодействия пользователя с элементами и получения их текщего статуса.
- By - абстракция над локатором веб элемента. Этот класс инкапсулирует информацию о селекторе(например, CSS), а также сам локатор элемента, то есть всю информацию, необходимую для нахождения нужного элемента на странице.
Сам процесс взаимодействия с браузером через Webdriver API довольно прост:
Нужно создать Webdriver:
WebDriver driver = new ChromeDriver();
При выполнении этой команды будет запущен Chrome, при условии, что он установлен в директорию по умолчанию и путь к ChromeDriver сохранен в системной переменной PATH.
Необходимо открыть тестируемое приложение (AUT), перейдя по url:
driver.get("http://mycompany.site.com");
Теоритически в хроме при этом должен открыться сайт компании.
Далее следует серия действий по нахождению элементов на странице и взаимодействию с ними:
By elementLocator = By.id("#element_id"); WebElement element = driver.findElement(elementLocator));
Или более кратко:
WebElement element = driver.findElement(By.id("#element_id")));
После нахождения элемента, кликнем по нему:
element.click();
Далее следует совокупность похожих действий, как того требует сценарий.
В конце теста (часто также и в середине) должна быть какая-то проверка, которая и определит в конечном счете результат выполнения теста:
assertEquals("Webpage expected title", driver.getTitle());
Проверки может и не быть, если цель вашего скрипта - не тест, а выполнение какой-то рутины.
- После теста надо закрыть браузер:
driver.quit();
Следует отметить, что для поиска элементов доступно два метода:
- Первый - найдет только первый элемент, удовлетворяющий локатору:
WebElement element = driver.findElement(By.id("#element_id")));
- Второй - вернет весь список элементов, удовлетворяющих запросу:
List<WebElement> elements = driver.findElements(By.name("elements_name"))
Более полную документацию Webdriver API можно найти по адресу: http://selenium.googlecode.com/git/docs/api/java/index.html