Робота з Webdriver (ч.3, робота з об’єктами)

Заповнення форм
Ми вже бачили, як ввести текст в текстове поле, але як щодо інших елементів? Ви можете “перемикання” стан чекбоксів, і ви можете використовувати “натиснути”, щоб встановити якусь опцію. Робота з елементами вибору також не складна:

Це знайде перший елемент вибору на сторінці, і в циклі знайде усі його варіанти, виведе їх значення і, вибравши кожен в свою чергу. Як ви помітили, це не найефективніший спосіб боротьби, щоб вибрати елементи.


Класи підтримки WebDriver включають в себе один, який називається “Select”, який містить корисні методи для взаємодії з ними.

Це скасує всі опції вибору з першого елемента вибору на сторінці, а потім вибере варіант з текстом “Едам”.


Після того, як ви закінчили заповнювати форму, ви, ймовірно, хочете, щоб відправити її. Один зі способів зробити це знайти кнопку “submit” і натиснути її:

Крім того, WebDriver має зручний метод “відправляти” для кожного елемента. Якщо ви застосуєте його до елемента у формі, WebDriver піде вгору по DOM, поки не знайде форму, що “обгортає” цей елемент, а потім викликає метод для відправки. Якщо елемент не в формі, то буде показана помилка NoSuchElementException:


Переміщення між вікнами і кадрами
Деякі веб-додатки мають багато кадрів або кілька вікон. WebDriver підтримує переміщення між зазначеними вікнами, використовуючи метод “switchTo”:

Всі виклики до драйвера будуть інтерпретуватися як спрямовані до конкретного вікна. Але, як ви знаєте ім’я вікна? Погляньте на JavaScript або посилання, що відкриває його:

Крім того, ви можете передати “дескриптор вікна» методу «switchTo().window()”. Знаючи це, можна перебрати всі відкриті вікна наступним чином:

Ви також можете перейти від кадру до кадру (або до кадрів):


Cпливаючі діалогові вікна
Починаючи з Selenium 2.0 Beta 1, є вбудована підтримка обробки діалогових спливаючих вікон. Після того як ви викликали дії, які відкрили так вікно, ви можете отримати доступ за допомогою наступного коду:

Це поверне відкритий об’єкт оповіщення. З цією метою ви можете прийняти, відхилити, прочитати його вміст або навіть ввести запрос. Цей інтерфейс працює однаково добре на попередження, підтвердження і запити. Зверніться до JavaDocs або RubyDocs для отримання додаткової інформації.