2014-01-06 3 views
0

Я пытаюсь смоделировать страницу, содержащую разделы и подразделы, и я столкнулся с проблемами при определении области обзора.Как обрабатывать элементы и подразделы, которые технически находятся за пределами области?

В разделе я определяю можно найти в DOM в иерархии так:

HTML> Тело> div.page-фон> DIV # обертка> DIV # содержание> DIV # первичный> ... >ДИВ # резервной поиск

И поэтому я определил раздел на странице с CSS Selector сНу # заповедного-поиска. Однако нажатие на кнопку в этом разделе вызывает всплывающее окно, с которым необходимо взаимодействовать. Даже несмотря на то, всплывающей логически часть секции, она расположена в другой части DOM:

HTML> Тело>DIV # оверлея-адрес

Это ставит меня в затруднительном , Текущий код выглядит как это:

class ReserveSearchPage < SitePrism::Page 
    section :reserve_search_section, ReserveSearchSection, "div#reserve-search" 
end 

class ReserveSearchSection < SitePrism::Section 
    section :overlay_address_section, OverlayAddressSection, "div#overlay-address" 
    element :address_section_button, "a#button" 

    def interactWithAddressSection 
     address_section_button.click 
     wait_until_overlay_address_section_visible 
     ... 
    end 
end 

class OverlayAddressSection < SitePrism::Section 
    elements :things, "blah#stuff" 
    ... 
end 

Проблема с вышесказанным в том, что при попытке вызвать interactWithAddressSection, то OverlayAddressSection определяется область действия ReserveSearchSection «с, так что она на самом деле выглядит для суб- раздел в DOM под div # reserve-search div # overlay-address. Поскольку подсекция не находится там, тайм-аут вызовов и подзаголовок не найдены.

Я хочу определить этот подраздел в более крупном разделе, который определенно там, где он логически принадлежит, и где ему нужно получить доступ. Есть ли способ определить локатор подраздела, не используя область родительского раздела?

Очевидно, что более удобный и «правильный» для подсектора существует внутри его родителя в DOM, но я видел множество всплывающих окон и панелей, определенных таким образом, технически живущих в совершенно другой части страницы, хотя структура определенно должна быть смоделирована как подраздел другой части DOM. Кажется, что для меня должен быть выход из области родительского раздела, возможно, путем определения подраздела с каким-то абсолютным селектором. Существует ли такой метод? Если нет, есть ли другие способы обхода?

ответ

0

Я разместил это после случайного создания новой учетной записи. Кажется, я ответил на свой вопрос. Как и большинство моих вопросов, ответ, который я придумал, довольно прост.

Работая при допущении, что для этого нет волшебного решения, я просто сделал OverlayAddressSection a SitePrism::Page, а не SitePrism::Section. Я могу создавать и вызывать эту страницу из раздела без каких-либо элементов или разделов страницы, наследующих область всеобъемлющего раздела.

Похоже, что это достаточно хорошее решение, к сожалению, нечастая проблема.