Quantcast
Channel: Selenide
Viewing all articles
Browse latest Browse all 47

Заметки об использовании Selenide: IE, TestNG, Bootstrap dropdown

$
0
0

Привет!

Меня зовут Сергей Шимкив, и я хочу поделиться с вами своими заметками об использовании Selenide/Selenium.

Заметки об IE

IE 11 x32/x64. В некоторых случаях после действий с HTML элементами (например, click()) вы можете получить ошибку.
Проблема в использовании синтетических событиях. Решение - использовать нативные события для IE:

java capabilities.setCapability("nativeEvents", "true");

См. https://code.google.com/p/selenium/wiki/InternetExplorerDriver


Один способ добавить скриншоты Selenide в TestNG HTML репорт

Иногда было бы неплохо добавить скриншоты Selenide от упавших тестов в ваш TestNG HTML отчёт.

К примеру: Вы написали два теста (Test1 и Test2), которые должны быть связаны (Test2 зависит от результатов Test1). Но вы знаете, что Test1 точно упадёт из-за ошибки приложения.


Поэтому вы пишете нечто подобное:

java @Test(...) public void Test1() { ... try { // Кусок теста с известным багом } catch(...) { // Некоторые действия } finally { // Действия, чтобы обеспечить корректные условия для запуска Test2 } }

Допустим, вы используете свой тест листенер, который наследует TestListenerAdapter. И вы переопределили метод onTestFailure(ITestResult result), чтобы собирать дополнительную информацию в HTML отчёт - например, ваши собственные скриншоты. В этом случае может статься, что ваш код будет собирать неправильную информацию о скриншотах, т.к. блок finallyможет быть выполнен ДО того, как Selenide сделает скриншот.


Какой же выход?

Просто помните, что имя файла скриншота, который делает Selenide (после любой ошибки), доступно из result.getThrowable().getMessage();

Один способ работать с кастомизированными Bootstrap HTML элементами

Тесты резко усложняются, когда приходится иметь дело с нетривиальными контролами.

К примеру, бутстраповский выпадающий список (dropdown) реализован как набор HTML элементов. Обычно это выглядит как-то так:

```html

```

Проблема в том, что элемент <ul>изначально невидимый. Selenium (а значит, и Selenide) его не видит и поэтому не может кликнуть. Чтобы выбрать элемент выпадающего списка, вам нужно:

```java SelenideElement parentDiv = $(“.dropdown”);

// Найти элемент <button>и click()его parentDiv.find(“button”).scrollTo().click();

// Теперь можете найти нужный элемент выпадаюшего списка по тексту parentDiv.find(“.dropdown-menu”).find(withText(“Действие”)).parent().click(); ```


В следующем посте я поделюсь опытом автоматической инсталляции а тестовую среду (основанной на Grid2).

Спасибо авторам Selenide за отличный тул ;)

Сергей Шимкив



Viewing all articles
Browse latest Browse all 47

Trending Articles