1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/nikytwo-geb-sample

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Простое руководство по Geb

Примеры экранов

Пример ## Внешние зависимости и установка

  • JDK 1. 7+
  • Gradle/Maven (выберите одно)
  • Groovy 2. 3+

Установка JDK 1. 7 (кратко)

Установка Gradle

  1. Скачайте
  2. Распакуйте
  3. Настройте переменные окружения: добавьте переменную среды GRADLE_HOME, указывающую на распакованную директорию, а также добавьте путь GRADLE_HOME/bin в переменную PATH.
  4. Проверьте установку: откройте командную строку и введите gradle -v

Установка Maven (кратко)

Установка Groovy

Вы можете использовать функцию управления зависимостями Gradle для автоматической установки Groovy, что позволяет избежать отдельной установки. Пример кода:

compile "org.gebish:geb-core:0.12.2"
compile "org.seleniumhq.selenium:selenium-firefox-driver:2.45.0"
compile "org.seleniumhq.selenium:selenium-support:2.45.0"

Запуск тестов

После установки всех необходимых библиотек скачайте пример проекта. Откройте командную строку в корневой директории проекта и выполните команду gradle test. Это запустит все функциональные тесты проекта. ## Использование

Конфигурация

По умолчанию конфигурационный файл Geb назван GebConfig.groovy.

  • baseUrl После того как вы установили baseUrl в конфигурационном файле, вы сможете использовать относительные пути при написании тестов. Например, в конфигурационном файле можно указать следующее:
baseUrl = 'http://myapp.com/'

Тестовый класс может выглядеть так:

{
    go "abc"
}```
Таким образом, полный URL будет выглядеть так: `http://myapp.com/abc`
* Поддержка браузера
`WebDriver` по умолчанию поддерживает `Firefox`. Для использования других браузеров вам потребуется скачать соответствующий `driver`.
Например, для `Chrome` вам потребуется скачать `chromedriver` (в данном проекте уже включен, поэтому дополнительно скачивать не требуется).
Дополнительную информацию см. в официальной документации.
### Основные методы API
#### Часто используемые
* `go`: переход на указанную страницу
* `to`: переход на страницу, определённую классом `Page`
* `waitFor`: ожидание ответа страницы
```groovy
// Ожидание, пока заголовок страницы не станет равным определённому значению
waitFor { title == "Страница заголовок" }
// Синтаксис
waitFor {} // По умолчанию время ожидания составляет 1 секунду
waitFor(10) {} // Максимальное время ожидания равно 10 секундам
waitFor(10, 0.5) {} // Максимальное время ожидания равно 10 секундам, проверка условия происходит каждую 0.5 секунды
waitFor("быстро") {} // Ожидание времени, установленного пользователем

При использовании waitFor, не следует использовать ссылки на объекты, поскольку это приведёт к тому, что каждый раз будет проверяться один и тот же объект.

Навигационный API

При написании автономных тестов для браузера часто требуется выполнять операции с DOM. К счастью, Geb предоставляет аналогичные jQuery селекторы, позволяющие легко находить элементы DOM.

  • $() метод
```  Используется аналогично jQuery
   Синтаксис:
   ```groovy
 ```markdown
 $([CSS селектор], [индекс или диапазон], [атрибут DOM элемента или совпадение текста])

Примеры:

$("div p", 0)
$("div p", title: "что-то")
$(0)
$(title: "что-то")
$("p", 0..1).text()
$("p", text: "p1").size()
$("p", text: "p1", class: "a").size()
// регулярные выражения
$("p", text: ~/p./)
$("p", text: startsWith("p"))
$("p", text: endsWith("2"))
$("p", text: contains(/\d/))
```### Geb предоставляет следующие методы работы с регулярными выражениями:

| Метод | Описание |
|-------|----------|
| startsWith | Начинается со строки |
| contains | Содержит строку |
| endsWith | Заканчивается строкой |
| containsWord | Содержит слово |
| notStartsWith | Не начинается со строки |
| notContains | Не содержит строки |
| notEndsWith | Не заканчивается строкой |
| notContainsWord | Не содержит слова |

#### Поиск и фильтрация

```groovy
// Эти два примера эквивалентны
$("div").find(".b")
$("div").$(".b")

// Получаем div с классом b
$("div").filter(".b")

// Получаем DOM, который не содержит p и имеет класс b
$(".b").not("p")
$("div").hasNot("p")

// Получаем div, содержащий p
$("div").has("p")

Обход

$("p.d").previous()
$("p.e").prevAll()
$("p.d").next()
$("p.c").nextAll()
$("p.d").parent()
$("p.c").siblings()
$("div.a").children()

Клик

$("a.login").click()

Размер и позиционирование

$("div").height == 20
$("div").width == 40
$("div").x == 20
$("div").y == 10

Доступ к имени тега, атрибутам, тексту и классам

<p title="a" class="a para">a</p>
<p title="b" class="b para">b</p>
<p title="c" class="c para">c</p>
assert $("p").text() == "a"
assert $("p").tag() == "p"
assert $("p").@title == "a"
assert $("p").classes() == ["a", "para"]

CSS свойства

assert $("div").css("float") == "left"

Симуляция ввода клавиш

// Ввести "foo"
$("input") << "foo"
assert $("input").value() == "foo"

// Ввести Ctrl+C
$("input") << Keys.chord(Keys.CONTROL, "c")

Сложные взаимодействия

  1. Прямое использование WebElement API WebDriver
  2. Использование класса Actions
    def actions = new Actions(driver)
    WebElement someItem = $("li.clicky").firstElement()
    def shiftClick = actions.keyDown(Keys.SHIFT).click(someItem).keyUp(Keys.SHIFT).build()
    shiftClick.perform()
    ```3. Использование замыканий
    ```groovy
    interact {
    нажми_shift_keys Keys.SHIFT
     клик $("li.clicky")
     отпусти_shift_keys Keys.SHIFT
 }

4 Пример Перетаскивание

interact {
   клик_и_удерживай($('#draggable'))
   переместиться_на_отступ(150, 200)
   освободить()
}
// или
interact {
   перетащить_и_выпустить_по_координатам($("#draggable"), 150, 200)
}
// или
interact {
   перетащить_и_выпустить($("#draggable"), $("#droppable"))
}

Ctrl + одиночный клик

import org.openqa.selenium.Keys
interact {
   нажми(Keys.CONTROL)
   клик($("ul.multiselect li", text: "Order 1"))
   клик($("ul.multiselect li", text: "Order 2"))
   клик($("ul.multiselect li", text: "Order 3"))
   отпусти(Keys.CONTROL)
}

Скроллбар

Actions actions = new Actions(driver)
actions.moveToElement(driver.findElement(By.id('tab'))).perform()
// или
interact {
            клик_и_удерживай($('#tab'))
            освободить()
}
// или
interact {
            клик(theUI)
}
// или
interact {
            переместиться_к_элементу(theUI)
}
// или использовать js (не показано)

Операция с Frames

(не показано)

Операция с JavaScript, AJAX и динамическими страницами

(не показано)

Обработка загрузки

(не показано)

Скрипты и привязка

(не показано)

Отчеты тестирования

(не показано)

Интеграция с тестовыми фреймворками

(не показано)

Другое

Geb может реализовать повторное использование страниц через наследование класса Page. Через наследование класса Module можно реализовать локальные страницы для повторного использования.Симулировать клик Alert()

driver.switchTo().alert().accept();

Дополнительная информация доступна в официальной документации.

Ссылки

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Пример тестирования автоматизации браузера (Geb). Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/nikytwo-geb-sample.git
git@api.gitlife.ru:oschina-mirror/nikytwo-geb-sample.git
oschina-mirror
nikytwo-geb-sample
nikytwo-geb-sample
master