Элементы теста:
- Приложение - драйвер
- Тестовая логика (описание)
-предусловия
-сценарии
-постусловия - Технические детали (код)
- Тестовые данные
Основные принципы:
- Повторное использование кода
- Атомарные тесты
- DSL - разбиение на тестовую логику и технические детали (логика не зависит ни от переменных, ни от реализации)
- Справочник доменных понятий
В отличае от сахи нет разделения на веб-элементы (span,textarea и тд)
Selenium предлагает семь встроенных способов поиска элементов:
Простые локаторы
- по идентификатору элемента (значению атрибута id)
element = driver.find_element(:id, 'some-frame')
- по имени элемента (значению атрибута name)
element = driver.find_element(:name, 'q')
- по классу элемента(значению атрибута class)
element = driver.find_element(:class, 'news') (или по class_name)
element = driver.find_element(:class_name, 'news')
- по тексту ссылки
element = driver.find_element(:link, "Зарегистрироваться") (или по link_text)
element = driver.find_element(:link_text, "Зарегистрироваться")
element = driver.find_element(:partial_link_text, "Регистрация") (ищется вхождение в текст ссылки)
- по названию тега элемента
element = driver.find_element(:tag_name, 'td')
- по запросу XPath
element = driver.find_element(:xpath, "//div[@id='content']/*/span")
element = driver.find_element(:xpath, "/html/body/div") - ищем от корня
element = driver.find_element(:xpath, "//input") - ищем по всем вложениям элемент input
element = driver.find_element(:xpath, "//*[@id=menu]") - ищем любой элемент с id menu element = driver.find_element(:xpath, "//menu")
element = driver.find_element(:xpath, "//span[@class=test and @name=span]") и
element = driver.find_element(:xpath, "//span [@class=test][@name=span]") или
element = driver.find_element(:xpath, "//a[text()='some text']")
element = driver.find_element(:xpath, "//div[1]") или element = driver.find_element(:xpath, "//div[position()=1]")
element = driver.find_element(:xpath, "//div[@id='test' and contains()='text']")
element = driver.find_element(:xpath, "//div[@id='it']/*/a[counts()=1]")
element = driver.find_element(:xpath, "/descendant::div[@id='my']/descendant::a[1]") Ищем среди потомков документы див my, а среди его потомков первую ссылку
element = driver.find_element(:xpath, "//a[ancestor::div[@id='my']]") Ищем ссылку с родителем div (c id my)
element = driver.find_element(:xpath, "//*[contains(text(),'ABC')]")
- по селектору CSS
- обращаемся к элементам
element = driver.find_element(:css, "span.toolbar-link") по классу
element = driver.find_element(:css, "span#news_class") по id
element = driver.find_element(:css, "p") по тегу - находим все элементы p
element = driver.find_element(:css, "*") все элементы на странице
- обращается по атрибутам
element = driver.find_element(:css, "div[class=toolbar_menu]") полное совпадение
element = driver.find_element(:css, "div[class^=toolbar]") начинается с
element = driver.find_element(:css, "div[class$=menu]") оканчивается на
element = driver.find_element(:css, "div[class]") div у которого есть атрибут class
element = driver.find_element(:css, "div[class*=bar]") содержит текст
- отношения элементов друг к другу
element = driver.find_element(:css, "div a") ищем все ссылки в дивах (все потомки в любой вложенности)
element = driver.find_element(:css, "div > a") ищем ссылки в дивах (непосредственный потомки - между ними не должно быть других элементов)
element = driver.find_element(:css, "div + div") ищем элемент сразу за элементом (между ними не должно быть других элементов)
element = driver.find_element(:css, "div ~ div") ищем элемент за элементом (между ними могут быть другие элементы)
element = driver.find_element(:css, "div:contains('text')") div содержит текст
element = driver.find_element(:css, "div#menu a:nth-of-type(1)") Первая ссылка в диве с id menu
element = driver.find_element(:css, "span[name=hello][background=green]") Ищем элемент с 2 атрибутами
Метод, начинающийся со слов findElement находит первый элемент, удовлетворяющий условиям поиска, а метод, начинающийся с findElements – все подходящие элементы
Подробнее про локаторы для руби тут
Отличный вебинар по локаторам от Михаила Поляруша - ссылка
Подробнее про локаторы вцелом тут и тут
Про то как правильно подбирать локаторы - подробнее
Команды
Комментариев нет:
Отправить комментарий