2013-09-16 23 views
6

Próbuję przeprowadzić prosty test akceptacji do celów edukacyjnych. To jest prosty scenariusz uwierzytelniania: użytkownik wchodzi /admin, jeśli nie jest zalogowany, zostanie przekierowany do /login, aby wypełnić formularz.Nie można uzyskać kodekceptacji w celu wypełnienia pól formularza

Kiedy uruchamiam test ja dostać ten błąd:

1) Couldn't login with a password protected area in LoginCest.loginUserWithProperCredentials 
Guy couldn't fill field "username","rafael": Field matching id|name|label|value or css or xpath selector does not exist 

Scenario Steps: 
5. I fill field "username","rafael" <==== RED 
4. I see current url equals "/login" 
3. I am on page "/admin" 
2. So that I Perform administrative tasks 
1. As a Site Owner 

Teraz tutaj jest mój widok:

//create.blade.php 
<!doctype html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Login</title> 
    </head> 
    <body> 
     <h1>Login</h1> 
     {{ Form::open() }} 
      <div> 
       {{ Form::Label('username', 'Username') }} 
       {{ Form::Text('username', '') }} 
      </div> 
      <div> 
       {{ Form::label('password', 'Password') }} 
       {{ Form::password('password', '') }} 
      </div> 
      <div> 
       {{ Form::submit('Login') }} 
      </div> 
     {{ Form::close() }} 
    </body> 
</html> 

A oto test:

class LoginCest 
{ 

    public function loginUserWithProperCredentials(WebGuy $I){ 
     $I->am("Site Owner"); 
     $I->wantTo("Login with a password protected area"); 
     $I->lookForwardTo("Perform administrative tasks"); 

     $I->amOnPage('/admin'); 
     $I->seeCurrentUrlEquals('/login'); 

     $I->fillField('username', 'rafael'); 
     $I->fillField("password", "123456"); 
     $I->click("Login"); 

     $I->seeCurrentUrlEquals("/admin"); 
     $I->see("Admin area", "h1"); 
    } 

} 

Każda pomoc będzie mile widziane .

Odpowiedz

1

może kopiować XPath nazwy użytkownika z html i napisać:

$I->fillField('//*[@id="addPosDialog"]/div/button','Username'); 

'//*[@id="addPosDialog"]/div/button' - wklej XPath tam. Możesz użyć xpath, name, id i innych lokalizatorów. Kiedy mam problemy z fillField zwykle robię coś takiego.

Kod HTML w tym przypadku jest ważniejszy niż kod widoku. Jeśli moja rada nie rozwiąże problemu, musisz zobaczyć kod HTML.

0

Miałem problem z nieprawidłową składnią html. Wtedy phpbrowser działa niezawodnie. Mimo to nie wygląda na to w twoim przykładzie.