我一直收到以下错误:
There was 1 error:
1) Caremonk\MainSiteBundle\Tests\Controller\SecurityControllerFunctionalTest::testIndex
InvalidArgumentException: The current node list is empty.
但是当我导航到localhost / login时,我的表单会填充正确的内容。这句话说......
$form = $crawler->selectButton('login')->form();
导致错误。我的考试有什么问题?
功能测试:
<?php
namespace Caremonk\MainSiteBundle\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class SecurityControllerFunctionalTest extends WebTestCase
{
public function testIndex()
{
$client = static::createClient();
$crawler = $client->request('GET', '/login');
$form = $crawler->selectButton('login')->form();
$form['username'] = 'testActive';
$form['password'] = 'passwordActive';
}
}
Twig视图:
{# src/Acme/SecurityBundle/Resources/views/Security/login.html.twig #}
{% if error %}
<div>{{ error.message }}</div>
{% endif %}
<form action="{{ path('caremonk_mainsite_login_check') }}" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
{#
If you want to control the URL the user is redirected to on success (more details below)
<input type="hidden" name="_target_path" value="/account" />
#}
<button type="submit">login</button>
</form>
答案 0 :(得分:17)
Vineet的答案是正确的但是......在我看来,从按钮采取形式并不是一个好主意。 更好的尝试:
$crawler->filter('form[name=yourAwesomeFormName]')->form();
或更改类,ID等的名称。在一个视图上可以有超过1个具有相同提交值的表单
答案 1 :(得分:7)
开始在symfony2中进行功能测试,发现你的问题没有答案,所以我们走了,
selectButton方法将实际按钮文本作为字符串参数。因此,如果您的按钮是“请提交我的表格”,那将是您的文字。
$form = $crawler->selectButton('submit my form please')->form();
通过安德鲁Stackoverflow
查看答案答案 2 :(得分:0)
selectButton()
为图片选择name
或alt
值的按钮。
答案 3 :(得分:0)
好的,这就是为什么我有这个错误以及我是如何解决它的。
(使用Goutte) 爬虫就像一个带GET的浏览器。
所以,在做的时候:
$client = new Client();
$crawler = $client->request('GET', '/login');
抓取工具正在尝试访问http://localhost/login
所以,基本上,我把它改为:
$client = new Client();
$crawler = $client->request('GET', 'http://site.dev/app_dev.php/login');
site.dev 是我的symfony项目的虚拟主机。
希望它有所帮助!