我正在使用Codeception 2.2.6来测试Laravel应用。我有一个简单的测试,打开一个带有表单的页面,填充一些字段,然后单击一个按钮。当我运行测试时,它工作正常,直到单击步骤,然后它失败并出现以下错误:
[ErrorException] Undefined property: DOMDocument::$tagName
堆栈跟踪显示错误来自clickButton
中的Codeception\Lib\InnerBrowser.php
方法:
/**
* Clicks the link or submits the form when the button is clicked
* @param \DOMNode $node
* @return boolean clicked something
*/
private function clickButton(\DOMNode $node)
{
$formParams = [];
$buttonName = (string)$node->getAttribute('name');
$buttonValue = $node->getAttribute('value');
if ($buttonName !== '' && $buttonValue !== null) {
$formParams = [$buttonName => $buttonValue];
}
while ($node->parentNode !== null) {
$node = $node->parentNode;
if ($node->tagName === 'a') {
$this->openHrefFromDomNode($node);
return true;
} elseif ($node->tagName === 'form') {
$this->proceedSubmitForm(
new Crawler($node),
$formParams
);
return true;
}
}
return false;
}
我有其他类似的测试,使用点击不同页面没有问题。有人可以帮我找出导致错误的原因
答案 0 :(得分:0)
问题是运行测试的页面不是有效的HTML。我的标签没有正确关闭。这导致Codeception的DOM爬虫失败。
编辑(请参阅下面的说明):
破解HTML具有这种基本结构:
<div> <!-- this should be inside the form -->
<form> <!-- this should be outside the div -->
</div>
<button>The Button</button>
</form>