2015-11-30 3 views
0

Я получаю следующее сообщение об ошибке при попытке запустить ГЭБ испытание как часть Maven построить в Eclipse:RequiredPageContentNotPresent в ГЭБ 0.12.2

Scenario: Perform login Time elapsed: 0.009 sec <<< FAILURE! 
geb.error.RequiredPageContentNotPresent: The required page content 'userName - SimplePageContent (owner: LoginPage, args: [], value: null)' is not present 

Единственная модель с ошибкой, кажется, что он бросается каждый раз, когда я пытаюсь использовать селектор geb для выбора/поиска содержимого какой-либо страницы, но использование селектора должно работать в готовом виде, верно?

Я использую следующие инструменты и библиотеки:

  • Затмение Mars Java EE ID (версия: 4.5.1)
  • ГЭБ (версия 0.12.2)
  • Селен (версия 2.48.2)
  • Groovy (версия 2.4.5)
  • Огурцы (версия 1.2.4)

Вот мой .feature файл:

Feature: Login 

    Scenario: Perform login 
    Given the user is at the login page 
    When the user enters <some_uid> and <some_pwd> 
    Then the user should be logged in 

Вот мое определение шагов:

package stepdefs 

import pages.LoginPage 

import static cucumber.api.groovy.EN.* 

Given(~"the user is at the login page") { -> 
    to LoginPage 
    assert at(LoginPage) 
} 

When(~"the user enters (.*) (.*)") { user, password -> 
    at LoginPage 
    page.doLogin(user,password) 
} 

Then(~"the user should be logged in"){ -> 
    assert at(LoginResultPage) 
} 

Вот моя страница определение:

package pages 

import geb.Page 

class LoginPage extends Page { 

    static url = "/TSADG_BORGER/loginpin.do"  
    static at = { title == "TastSelv Borger" } 

     static content = {  
     loginForm { $($/form/$,id:"mainForm") } 
     userName { loginForm.find("input",id:"pnr") } 
     pass { loginForm.find("input",id:"tastselvKode") } 
     buttonLogin { loginForm.find("input",id:"bt1") } 
    } 

    def doLogin(user, password) { 
     userName = user 
     pass = password 
     buttonLogin.click() 
    } 
} 

Вот HTML для формы:

<form id="mainForm" action="/TSADG_BORGER/loginpin.do" role="form" method="post" autocomplete="off"> 
       <input type="hidden" name="dispatch" value="Valider">  
       <div class="row skts-centered-padding"> 
        <div class="col-sm-12">       
         <h1>Log på med TastSelv-kode</h1> 
        </div>            
        <div class="col-sm-6"> 
         <div class="skts-process-form-section skts-required "> 
          <p><label for="pnr">Cpr-nummer</label></p> 
          <div> 
           <input id="pnr" type="text" value="" class="form-control skts-required-val" name="pnr" size="16" maxlength="14" data-validation-event="blur" data-show-type="string" data-show-facets="pattern" data-show-facet-values="/(^\d{10}$)|(^\d{6}\-\d{4}$)/" aria-required="true" aria-invalid="false" aria-describedby="pnrError " autocomplete="off">         
          </div> 
         </div> 
         <div class="skts-process-form-section skts-required"> 
          <p><label for="tastselvKode">TastSelv-kode</label></p> 
          <div> 
           <input id="tastselvKode" type="password" value="" class="form-control skts-required-val" name="tastselvKode" size="16" maxlength="16" data-show-type="string" data-show-facets="pattern" data-show-facet-values="/^[^]{7,16}$/" data-validation-event="blur" aria-required="true" aria-invalid="false" aria-describedby="tastSelvKodeError " autocomplete="off">                  
          </div> 
         </div> 
         <br> 
         <p> 
          <input type="submit" id="bt1" class="btn btn-primary skts-validate" value="Fortsæt" autocomplete="off"> 
         </p> 
        </div> 
       </div> 
      </form> 

Любая помощь и ввод i с оценкой.

ответ

0

Проблема была решена.

Я был так уверен, что это была проблема с селекторами, поэтому мне потребовалось некоторое время, чтобы вытащить мою голову из песка и сделать шаг назад. Когда я это сделал, я понял, что URL-адрес в классе «LoginPage» действительно сделал перенаправление на другую страницу, чего я не ожидал. Страница, на которую я была перенаправлена, явно не содержала ни одного из объектов, которые я искал в разделе моего содержимого. Поэтому, когда в сообщении об ошибке указано, что «Необходимое содержимое страницы ... нет», это было абсолютно правильно.

Действительно глупая ошибка с моей стороны ...

1

Я хотел бы изменить ваше содержание раздела немного:

static content = {  
    loginForm { $("form#mainForm"") } 
    userName { $("input#pnr") } 
    pass { $("input#tastselvKode") } 
    buttonLogin { $("input#bt1") } 
} 

Использование JQuery селекторы в Геба! Они очень удобны. Обратите внимание, что если вы используете уникальные идентификаторы $ ("# mainForm" "), то будет иметь тот же эффект, что и $ (" form # mainForm ""). Первый вариант проще, второй более выразительным;)

Подробнее: http://www.w3schools.com/jquery/jquery_ref_selectors.asp

И: http://www.gebish.org/manual/current/#the-jquery-ish-navigator-api

+0

Thnx для наконечника, @aMossingOne :-). Я решил свою проблему пару дней назад, кстати, я добавлю ответ позже сегодня. Это была действительно глупая ошибка с моей стороны ... – nils1k

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

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