0


我找不到将“按钮”或“输入”字段添加到 Symfony 中的爬虫的表单以进行测试的方法。我正在这样做:

$crawler = $this->client->request('GET', '');
$document = new \DOMDocument();
$document->loadXml('<button type="submit" name="_submit" href="#">Create</button >');
$nodeList = $document->getElementsByTagName('button');
$node = $document->getElementsByTagName('button')->item(0);
$crawler->addNode($node, $form);
var_dump($crawler->filter('button[name="_submit"]')->text()); //Return Create Logic

但是当我尝试发送我的表格时,我得到了:

$form = $crawler->selectButton('_submit')->form(array(
                                                'login-input' => 'XXXXXX',
                                                'pass-input'  => 'XXXXX',
                                            ));

这不起作用我有:

LogicException:所选节点没有表单祖先。

我没有任何按钮或输入字段,因为它是一个 javascript 提交。
有人知道吗?


编辑
我找到了另一种方法:我直接发送 ajax 请求,我得到了相同的效果@redbirdo,你的解决方案对我不起作用,也不是我在问题开始时想要的

4

1 回答 1

1

您可以使用客户端在测试中模拟 POST 请求,如下所示:

$client->request(
    'POST',
    '/submit',
    array('name' => 'Fabien'),
    array('photo' => $photo)
);

Symfony 手册的测试部分中的使用测试客户端下有更多示例。

编辑:

第二个参数应该是被测试页面的相对或绝对 url。这里的 '/submit' 只是一个 symfony 的例子。

于 2013-06-05T09:20:08.273 回答