如何在Symfony中添加XML内容

时间:2013-06-05 09:01:05

标签: symfony functional-testing web-crawler


我没有找到一种方法将表单中的“按钮”或“输入”字段添加到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,你的解决方案对我不起作用,而不是我想要的问题

1 个答案:

答案 0 :(得分:1)

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

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

Symfony手册的“测试”部分中的Working with the Test Client下有更多示例。

编辑:

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