无法获取Codeception来填充表单字段

时间:2013-09-16 17:11:22

标签: php laravel acceptance-testing blade codeception

我正在尝试为学习目的进行简单的验收测试。 这是一个简单的身份验证方案:用户输入/admin,如果未记录,则会被重定向到/login以填写表单。

当我运行测试时,我收到此错误:

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

现在这是我的观点:

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

这是测试:

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

}

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以从html复制用户名的XPath,并写下:

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

'//*[@id="addPosDialog"]/div/button' - 将xpath粘贴到那里。 您可以使用xpath,name,id和其他定位器。 当我遇到fillField问题时,我通常会做这样的事情。

在这种情况下,HTML代码比视图代码更重要。 如果我的建议无法解决问题,需要查看HTML代码。

答案 1 :(得分:0)

我遇到了html语法不正确的问题。然后phpbrowser工作不可靠。即便如此,它在你的例子中看起来也不像。