Как мы обрабатываем навигацию между страницами в среде тестирования модели объекта страницы

Я использую структуру BDD Cucumber с рубином для тестирования веб-сайта. И я следую шаблону Page Object Model. У меня есть разные классы для каждой страницы с ее элементами и функциями, а также отдельный файл функций для каждого из сценариев, связанных с этой страницей.

Я новичок в структуре POM и засомневался:

Теперь, если я хочу иметь сценарий, который включает в себя запуск с домашней страницы, навигацию по меню/подменю и попадание на определенную страницу1 сайта, и я хочу убедиться, что я нахожусь на правильной странице либо по URL-адресу, либо по заголовку.

  1. Должен ли я поместить такой сценарий в home_page.feature или page_1.feature?

  2. Если я начну с домашней страницы, очевидно, моя переменная @page будет загружена с помощью Home Page , поэтому, когда и где я должен изменить ее Page1, так как мне понадобятся элементы Page1 для проверки последнего шага (url, заголовок или изображение и т. д., что я на странице 1)

  3. Как люди обычно строят свои тесты вокруг навигации с помощью POM-фреймворка?


person Aks..    schedule 15.12.2015    source источник


Ответы (2)


Мы создали файл функции навигации, в котором есть <MENU> и ссылка на подменю, чтобы ответить на ваш первый вопрос.

//Чтобы убедиться, что все ссылки присутствуют

   Feature : verify all submenu links 
    Given as user I logs in "http://stackoverflow.com/ 
    When I click on menu "<StackExchange>" 
    Then I able to see following submenu link"<Meta Stack Overflow,Stack overFlow Careers>"

Вот структурная идея, которая у нас есть прямо сейчас для навигации

  • У нас есть один класс для каждой страницы, и у нас есть отдельный класс для верхнего и нижнего колонтитула, правого бокового меню.
  • Все меню имеют ожидаемое поведение, если я нажму на домашнюю страницу, чем я окажусь на домашней странице. Каждое меню возвращает ожидаемый объект, и с помощью этого объекта мы проверяем заголовок и ожидаемые элементы. Здесь, когда я нажимаю ссылку на домашнюю страницу, она возвращает HomePagePOM.class, и с помощью этого объекта я могу проверить страницу

  • В классе навигации он будет иметь все меню и подменю и возвращать ожидаемый объект.

person N..    schedule 15.12.2015

Вы можете перемещаться по странице по имени и значению страницы, разные значения могут означать разные страницы.

# Given I am on page users board
Given /^I am on page ?(.+)?$/ do |page_name|
  case page_name
  when 'homepage'
    visit root_path
  when 'users board'
    visit users_path
  when 'products board'
    visit product_path
  else
    raise "Missing mapping for '#{page_name}' page."
  end
end

Это вызовет исключение Missing mapping for '#{page_name}' page., если имя страницы не определено.

Узнайте о других способах использования тестов на огурцы в этой статье.

person Nesha Zoric    schedule 16.03.2018