Основные понятия и методы Selenium Webdriver API

Основными понятиями в Selenium Webdriver являются:

  • Webdriver - самая важная сущность, отвественная за управление браузером. Основной ход скрипта/теста строится именно вокруг экземпляра этой сущности.
  • Webelement - вторая важная сущность, представляющая собой абстракцию над веб элементом (кнопки, ссылки, инпута и др.). Webelement инкапсулирует методы для взаимодействия пользователя с элементами и получения их текщего статуса.
  • By - абстракция над локатором веб элемента. Этот класс инкапсулирует информацию о селекторе(например, CSS), а также сам локатор элемента, то есть всю информацию, необходимую для нахождения нужного элемента на странице.

Сам процесс взаимодействия с браузером через Webdriver API довольно прост:

  1. Нужно создать Webdriver:

     WebDriver driver = new ChromeDriver();
    

    При выполнении этой команды будет запущен Chrome, при условии, что он установлен в директорию по умолчанию и путь к ChromeDriver сохранен в системной переменной PATH.

  2. Необходимо открыть тестируемое приложение (AUT), перейдя по url:

     driver.get("http://mycompany.site.com");
    

    Теоритически в хроме при этом должен открыться сайт компании.

  3. Далее следует серия действий по нахождению элементов на странице и взаимодействию с ними:

     By elementLocator = By.id("#element_id");
     WebElement element = driver.findElement(elementLocator));
    

    Или более кратко:

     WebElement element = driver.findElement(By.id("#element_id")));
    

    После нахождения элемента, кликнем по нему:

     element.click();
    

    Далее следует совокупность похожих действий, как того требует сценарий.

  4. В конце теста (часто также и в середине) должна быть какая-то проверка, которая и определит в конечном счете результат выполнения теста:

     assertEquals("Webpage expected title", driver.getTitle());
    

    Проверки может и не быть, если цель вашего скрипта - не тест, а выполнение какой-то рутины.

  5. После теста надо закрыть браузер:
     driver.quit();
    

Следует отметить, что для поиска элементов доступно два метода:

  1. Первый - найдет только первый элемент, удовлетворяющий локатору:
     WebElement element = driver.findElement(By.id("#element_id")));
    
  2. Второй - вернет весь список элементов, удовлетворяющих запросу:
     List<WebElement> elements = driver.findElements(By.name("elements_name"))
    

Более полную документацию Webdriver API можно найти по адресу: http://selenium.googlecode.com/git/docs/api/java/index.html