2013-09-16 48 views
6

Tôi đang cố gắng thực hiện một bài kiểm tra chấp nhận đơn giản cho mục đích học tập. Đó là một kịch bản xác thực đơn giản: người dùng nhập /admin, Nếu chưa đăng nhập, anh ta được chuyển hướng đến /login để điền vào biểu mẫu.Không thể nhận được Codeception để điền vào các trường mẫu

Khi tôi chạy thử nghiệm tôi nhận được lỗi này:

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 

Bây giờ đây là quan điểm của tôi:

//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> 

Và đây là bài kiểm tra:

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"); 
    } 

} 

Bất kỳ trợ giúp sẽ được đánh giá cao .

Trả lời

1

Bạn có thể sao chép XPath của tên người dùng từ html, và viết:

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

'//*[@id="addPosDialog"]/div/button' - dán xpath của bạn ở đó. Bạn có thể sử dụng xpath, tên, id và các định vị khác. Khi tôi gặp sự cố với fillField, tôi thường làm một việc như thế này.

Mã HTML trong trường hợp này quan trọng hơn mã xem. Nếu lời khuyên của tôi không giải quyết được vấn đề, cần xem mã HTML.

0

Tôi gặp sự cố trong đó cú pháp html không chính xác. Sau đó, phpbrowser hoạt động không đáng tin cậy. Mặc dù vậy nó không giống như nó trong ví dụ của bạn.