我没有找到一种方法将表单中的“按钮”或“输入”字段添加到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提交 有人有什么想法吗?
<小时/> 编辑
答案 0 :(得分:1)
您可以使用客户端在测试中模拟POST请求,如下所示:
$client->request(
'POST',
'/submit',
array('name' => 'Fabien'),
array('photo' => $photo)
);
Symfony手册的“测试”部分中的Working with the Test Client下有更多示例。
编辑:
第二个参数应该是被测试页面的相对或绝对URL。这里的'/ submit'只是一个symfony示例。