Робота з Webdriver (ч.2, звернення до об’єктів)

Selenium-WebDriver команди API і операції

Перехід на сторінку
Перше, що ви, мабуть, хочете зробити з WebDriver – це перейти до сторінки. Звичайний спосіб зробити це за викликом “отримати”:


Звернення до елементів інтерфейсу (Web Elements)
Звернення до елементу в WebDriver може бути зроблено через сам WebDriver або за допомогою WebElement. Кожен з прив’язок надає метод “Знайти елемент” і “знайти елементи”. Спочатку повертає об’єкт WebElement в іншому випадку він викликає виняток. Потім повертає список WebElements, також може повертати порожній список, якщо елементи не відповідають запиту.
Методи пошуку приймають об’єкт запитів “за” чимось. “За” чим можна звертатись до елементів перераховано нижче.


За ID
Це найбільш ефективний і кращий спосіб знайти елемент. Єдиний мінус – коли розробники інтерфейсу користувача роблять НЕ-унікальних ідентифікатори на сторінці або ідентифікатор, що генеруються автоматично. Клас HTML-елементу є більш доцільним, ніж автоматично згенерований ID.
Приклад того, як знайти елемент, який виглядає наступним чином:


За назвою класу
“Клас” в даному випадку відноситься до атрибуту елемента DOM. Часто в практичному використанні є багато елементів DOM з тим же ім’ям класу, тому, для пошуку кількох елементів стає більш практичним варіантом в порівнянні з знаходження першого елемента (за ID).
Приклад того, як знайти елемент, який виглядає наступним чином:


За Тегом
DOM Tag Name елементу.

Приклад того, як знайти елемент, який виглядає наступним чином:


За назвою
Знайти елемент за відповідним ім’ям атрибута.

Приклад того, як знайти елемент, який виглядає наступним чином:


За Посиланням
Знайти елемент посилання за текстом посилання.

Приклад того, як знайти елемент, який виглядає наступним чином:


За частиною посилання
Знайти елемент посилання з частковою відповідністю видимого тексту.

Приклад того, як знайти елемент, який виглядає наступним чином:


За CSS
Як випливає з назви це метод знаходження CSS. Браузер за замовчуванням підтримує, тому, будь ласка, зверніться до списку W3C загальнодоступних CSS селекторів. Якщо браузер не має вбудованої підтримки для CSS запитів, тоді використовується Sizzle. IE 6,7 і FF3.0 в даний час використовують Sizzle як двигун обробки CSS запиту.

Пам’ятайте, що не всі браузери були створені рівними, деякі CSS, які можуть працювати в одній версії можуть не працювати в іншій.

Приклад, як знайти сир з коду нижче:


За XPATH
На високому рівні, WebDriver використовує вбудовані можливості браузера XPath скрізь, де це можливо. На тих браузерів, які не мають вбудовану підтримку XPath, WebDriver надає власну реалізацію. Це може привести до деякої несподіваної поведінки, якщо ви не обізнані про відмінності в різних версіях XPath.

Драйвер Назва тегу і атрибуту Значення атрибутів Вбудована підтримка xpath
Драйвер Htmlunit У нижньому регістрі Як вони відображаються в HTML Так
Драйвер Internet Explorer У нижньому регістрі Як вони відображаються в HTML Ні
Драйвер Firefox Чутливий до регістру Як вони відображаються в HTML Так

Це досить абстрактно, тому на наступний шматок коду HTML:

Код знаходження елемента, що нам потрібен, буде таким:

Наступна кількість збігів буде знайдена:

Вираз XPath Драйвер Htmlunit Драйвер Firefox Драйвер Internet Explorer
//input 1 (“example”) 2 2
//INPUT 0 2 0

Іноді HTML елементам не потрібні атрибути, які будуть оголошені явно, бо вони будуть за замовчуванням відомі. Наприклад, тег для вводу тексту не вимагає наявності атрибута “тип”, тому що він за замовчуванням “текст”. Правило використання XPath в WebDriver полягає в тому, що ви не повинні чекати, щоб бути в змозі відповідати за ці неявні атрибути.


За JavaScript
Ви можете виконати довільний JavaScript, щоб знайти елемент, і як тільки ви повернути DOM елемент, він буде автоматично перетворений в об’єкт WebElement.

Простий приклад на сторінці, яка завантажує JQuery:

Знаходження всіх елементів для вводу тексту на сторінці: