2016-01-07 2 views
0

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

Просто небольшой пример:

<div id="mycontroller1"> 

    <div class="myfield1">Some text11</div> 
    <div class="myfield2">Some text12</div> 

</div> 

<div id="mycontroller2"> 

    <div class="myfield1">Some text21</div> 
    <div class="myfield2">Some text22</div> 

</div> 

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

def 'Whether my page worked correctly'() { 

    when: 
     to MyPage 
     ... 

    then: 

     assert mycontroller1.myfield1 == "Some text11" 
     assert mycontroller1.myfield2 == "Some text12" 

     assert mycontroller2.myfield1 == "Some text21" 
     assert mycontroller2.myfield2 == "Some text22" 

} 

То есть, поля доступа через элемент промежуточной иерархии (нота точки ноты).

Как бы мне написать определение страницы?

В настоящее время я подозреваю, что я знаю, как писать «плоский» путь

class MyPage extends Page { 

    static url ... 

    static at ... 

    static content = { 

     mycontroller1_myfield1 { 
      $('#mycontroller1 .myfield1').text() 
     } 

     mycontroller1_myfield2 { 
      $('#mycontroller1 .myfield2').text() 
     } 

     mycontroller2_myfield1 { 
      $('#mycontroller2 .myfield1').text() 
     } 

     mycontroller2_myfield2 { 
      $('#mycontroller2 .myfield2').text() 
     } 



    } 

} 

, которые позволяют проверить «плоское» (примечание подчеркивания)

def 'Whether my page worked correctly'() { 

    when: 
     to MyPage 
     ... 

    then: 
     assert mycontroller1_myfield1 == "Some text11" 
     assert mycontroller1_myfield2 == "Some text12" 

     assert mycontroller2_myfield1 == "Some text21" 
     assert mycontroller2_myfield2 == "Some text22" 

} 

Как написать иерархическими?

Кроме того, я должен был написать поиск по номеру $('#mycontroller1 много раз, что выглядит чрезмерно. Если бы я смог выбрать какой-то блок, а затем добавить некоторые дополнительные варианты или проверки на этот блок - это было бы здорово.

+0

Почему бы просто не назвать их 'myfield1' в блоке' content'? –

+0

В некоторых случаях могут быть дубликаты. Например, многие формы на странице и т. Д. – Dims

+1

Дублирующие идентификаторы ?? –

ответ

0

Вы должны использовать класс, который расширяет Module, чтобы моделировать повторяющийся контент - повторяющийся на разных страницах или на одной странице. Модули объясняются в this chapter of The Book of Geb, и есть даже секция abut using modules for repeating content.

 Смежные вопросы

  • Нет связанных вопросов^_^